* 在前面幾講中已經提到,每一個UIView內部都默認關聯著一個CALayer,我們可用稱這個Layer為Root Layer(根層)。所有的非Root Layer,也就是手動創建的CALayer對象,都存在著隱式動畫。
* 當對非Root Layer的部分屬性進行相應的修改時,默認會自動產生一些動畫效果,這些屬性稱為Animatable PRoperties(可動畫屬性)。
* 列舉幾個常見的Animatable Properties:
比如:假設一開始CALayer的position為(100, 100),然后在某個時刻修改為(200, 200),那么整個CALayer就會在短時間內從(100, 100)這個位置平移到(200, 200)
* 我們也可以從官方文檔中查詢所有的Animatable Properties
* position和anchorPoint屬性都是CGPoint類型的
* position可以用來設置CALayer在父層中的位置,它是以父層的左上角為坐標原點(0, 0)
* anchorPoint稱為"定位點",它決定著CALayer身上的哪個點會在position屬性所指的位置。它的x、y取值范圍都是0~1,默認值為(0.5, 0.5)
1 CALayer *myLayer = [CALayer layer]; 2 // 設置層的寬度和高度(100x100) 3 myLayer.bounds = CGRectMake(0, 0, 100, 100); 4 // 設置層的位置 5 myLayer.position = CGPointMake(100, 100); 6 // 設置層的背景顏色:紅色 7 myLayer.backgroundColor = [UIColor redColor].CGColor; 8 9 // 添加myLayer到控制器的view的layer中10 [self.view.layer addSublayer:myLayer];
第5行設置了myLayer的position為(100, 100),又因為anchorPoint默認是(0.5, 0.5),所以最后的效果是:myLayer的中點會在父層的(100, 100)位置
注意,藍色線是我自己加上去的,方便大家理解,并不是默認的顯示效果。兩條藍色線的寬度均為100。
1 myLayer.anchorPoint = CGPointMake(0, 0);
1 myLayer.anchorPoint = CGPointMake(1, 1);
1 myLayer.anchorPoint = CGPointMake(0, 1);
我想,你應該已經明白anchorPoint的用途了吧,它決定著CALayer身上的哪個點會在position所指定的位置上。它的x、y取值范圍都是0~1,默認值為(0.5, 0.5),因此,默認情況下,CALayer的中點會在position所指定的位置上。當anchorPoint為其他值時,以此類推。
新聞熱點
疑難解答