frames是相对于父视图的坐标系
bounds是相对于自身的坐标系
更改bounds的size的时候,并不会更改它的Center 也就是说,宽和高是相对于中心点不变的情况下向两边延伸的。
更改frame的size的时候,就更改了中心点。长和宽相对于左上角的坐标不变,更改宽和高
更改frame的origin的时候,更改的是自己本身对于父视图的位置,子试图相对于自己的位置是没有改变的。而更改bounds的时候,相当于更改自己的子视图相对于自己的位置。因为改了自己的坐标原点,而子试图的frame的origin没有改变,所有相对位置会改变。
layer中的position相当于frame的origin是相对于父视图的,anchorPoint相当于bounds的origin是相对于自身的。
anchorPoint是决定旋转等动画的位置,默认是(0.5,0.5),沿着中心旋转,如果更改为(0,0)后会沿着左上角旋转。
需要注意的是当更改anchorPoint的时候,frame会发生改变。而position不会改变。
position应该是锚点所在的位置相对于父视图的位置
更改锚点的时候不能做动画,但是更改position的时候是可以的
三者的关系
frame.origin.x = position.x - anchorPoint.x * bounds.size.width
frame.origin.y = position.y - anchorPoint.y * bounds.size.heigh
复制代码