frame、bounds、layer的position、anchorPoint

倚樓聽夢發表於2017-12-21

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
複製程式碼

相關文章