一、隱式動畫屬性
* 在前面幾講中已經提到,每一個UIView內部都默認關聯着一個CALayer,我們可用稱這個Layer為Root Layer(根層)。所有的非Root Layer,也就是手動創建的CALayer對象,都存在着隱式動畫。
* 當對非Root Layer的部分屬性進行相應的修改時,默認會自動產生一些動畫效果,這些屬性稱為Animatable Properties(可動畫屬性)。
* 列舉幾個常見的Animatable Properties:
- bounds:用於設置CALayer的寬度和高度。修改這個屬性會產生縮放動畫
- backgroundColor:用於設置CALayer的背景色。修改這個屬性會產生背景色的漸變動畫
- position:用於設置CALayer的位置。修改這個屬性會產生平移動畫
比如:假設一開始CALayer的position為(100, 100),然后在某個時刻修改為(200, 200),那么整個CALayer就會在短時間內從(100, 100)這個位置平移到(200, 200)
* 我們也可以從官方文檔中查詢所有的Animatable Properties
1.點擊Window -> Organizer
2.在搜索框輸入"animatable"即可
二、position和anchorPoint
* position和anchorPoint屬性都是CGPoint類型的
* position可以用來設置CALayer在父層中的位置,它是以父層的左上角為坐標原點(0, 0)
* anchorPoint稱為"定位點",它決定着CALayer身上的哪個點會在position屬性所指的位置。它的x、y取值范圍都是0~1,默認值為(0.5, 0.5)
1.創建一個CALayer,添加到控制器的view的layer中
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。
2.若將anchorPoint改為(0, 0),myLayer的左上角會在(100, 100)位置
1 myLayer.anchorPoint = CGPointMake(0, 0);
3.若將anchorPoint改為(1, 1),myLayer的右下角會在(100, 100)位置
1 myLayer.anchorPoint = CGPointMake(1, 1);
4.將anchorPoint改為(0, 1),myLayer的左下角會在(100, 100)位置
1 myLayer.anchorPoint = CGPointMake(0, 1);
我想,你應該已經明白anchorPoint的用途了吧,它決定着CALayer身上的哪個點會在position所指定的位置上。它的x、y取值范圍都是0~1,默認值為(0.5, 0.5),因此,默認情況下,CALayer的中點會在position所指定的位置上。當anchorPoint為其他值時,以此類推。