有这样的的一个VIew
点击Button后进行45度的旋转。
两种方式都可以
//self.view2.transform=CGAffineTransformMakeRotation(M_PI/6);
//self.view2.layer.transform = CATransform3DMakeRotation(M_PI/4, 0, 0, 1);
围绕着默认的中心锚点旋转45度后,frame如何变化呢?
NSLog(@"self.view2.frame - x - %f y -%f w -%f d -%f",self.view2.frame.origin.x,self.view2.frame.origin.y,self.view2.frame.size.width,self.view2.frame.size.height);
//self.view2.transform=CGAffineTransformMakeRotation(M_PI/6);
self.view2.layer.transform = CATransform3DMakeRotation(M_PI/4, 0, 0, 1);
NSLog(@"self.view2.frame - x - %f y -%f w -%f d -%f",self.view2.frame.origin.x,self.view2.frame.origin.y,self.view2.frame.size.width,self.view2.frame.size.height);
结果为:
2016-05-26 15:04:48.490 test[37094:4422449] self.view2.frame - x - 40.000000 y -126.000000 w -180.000000 d -180.000000
2016-05-26 15:04:48.490 test[37094:4422449] self.view2.frame - x - 2.720779 y -88.720779 w -254.558441 d -254.558441
可以看到frame进行了相应角度变化,为什么呢?
先进行猜测吧,对View进行transform,内部实现应该也是对相应的layer进行transform,layer的变化怎样影响frame呢?
我认为应该是对layer旋转后,layer的frame发生变化,从而导致view的frame发生变化。
做个相关实验
NSLog(@"self.view2.frame - x - %f y -%f w -%f d -%f",self.view2.frame.origin.x,self.view2.frame.origin.y,self.view2.frame.size.width,self.view2.frame.size.height);
NSLog(@"self.view2.layer.frame - x - %f y -%f w -%f d -%f",self.view2.layer.frame.origin.x,self.view2.layer.frame.origin.y,self.view2.layer.frame.size.width,self.view2.layer.frame.size.height);
self.view2.layer.frame = CGRectMake(_view2.frame.origin.x + 80, _view2.frame.origin.y, self.view2.frame.size.width, self.view2.frame.size.height);
NSLog(@"self.view2.layer.frame - x - %f y -%f w -%f d -%f",self.view2.layer.frame.origin.x,self.view2.layer.frame.origin.y,self.view2.layer.frame.size.width,self.view2.layer.frame.size.height);
NSLog(@"self.view2.frame - x - %f y -%f w -%f d -%f",self.view2.frame.origin.x,self.view2.frame.origin.y,self.view2.frame.size.width,self.view2.frame.size.height);
结果为:
2016-05-26 14:55:30.767 test[37051:4416067] self.view2.frame - x - 40.000000 y -126.000000 w -180.000000 d -180.000000
2016-05-26 14:55:30.767 test[37051:4416067] self.view2.layer.frame - x - 40.000000 y -126.000000 w -180.000000 d -180.000000
2016-05-26 14:55:30.767 test[37051:4416067] self.view2.layer.frame - x - 120.000000 y -126.000000 w -180.000000 d -180.000000
2016-05-26 14:55:30.768 test[37051:4416067] self.view2.frame - x - 120.000000 y -126.000000 w -180.000000 d -180.000000