在iOS 中,UIButton、UIImage等UIView 之所以能夠顯示在屏幕上,是因為其內部有一個圖層(CALayer)。通過UIView的layer 屬性可以訪問這個圖層:
@property(nonatomic,readonly,retain) CALayer *layer;
當UIView需要顯示到屏幕上時,會調用 drawRect: 方法進行繪圖,並且會將所有內容繪制在自己的圖層上,繪圖完畢后,系統會將圖層拷貝的屏幕上,於是就完成了UIView的顯示。
UIView中有兩個容易混淆的屬性, postion 和 anchorPoint(錨點)。postion用來設置CALayer 在父層中的位置,anchorPoint決定着CALayer上的哪個點會在postion點上。舉個例子來說,紅色圖層要加在綠色圖層上。
(1)positon為(100,100),anchorPoint為(0,0),效果圖如下
(2)positon為(100,100),anchorPoint為(0.5,0.5),效果圖如下
(3)positon為(100,100),anchorPoint為(1,1),效果圖如下
(4)positon為(100,100),anchorPoint為(1,0.5),效果圖如下
即:anchorPoint決定着CALayer上的哪個點會在postion點上。