CALayer3-層的屬性


一、隱式動畫屬性

* 在前面幾講中已經提到,每一個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為其他值時,以此類推。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM