iOS-繪製圖層-CALayer的屬性,ios-繪製圖-calayer

來源:互聯網
上載者:User

iOS-繪製圖層-CALayer的屬性,ios-繪製圖-calayer

 

一、position和anchorPoint

1.簡單介紹

CALayer有2個非常重要的屬性:position和anchorPoint

@property CGPoint position;

用來設定CALayer在父層中的位置

以父層的左上方為原點(0, 0)

 

@property CGPoint anchorPoint;

稱為“錨點”、“錨點”

決定著CALayer身上的哪個點會在position屬性所指的位置

以自己的左上方為原點(0, 0)

它的x、y取值範圍都是0~1,預設值為(0.5, 0.5)

2.圖示

anchorPoint

它的取值為0~1

 

紅色圖層的anchorPoint為(0,0)

紅色圖層的anchorPoint為(0.5,0.5)

紅色圖層的anchorPoint為(1,1)

紅色圖層的anchorPoint為(0.5,0)

position和anchorPoint

添加一個紅色圖層到綠色圖層上,紅色圖層顯示到什麼位置,由position屬性決定

假設紅色圖層的position是(100,100)

  到底把紅色圖層的哪個點移動到(100,100)的座標位置,錨點。

  紅色圖層的錨點是(0,0)

紅色圖層的錨點是(0.5,0.5)

紅色圖層的錨點是(1,1)

紅色圖層的錨點是(0.5,0)

3.程式碼範例

(1)沒有設定錨點。預設的錨點位置為(0.5,0.5)

 1 // 2 //  YYViewController.m 3 //  03-錨點等屬性 4 // 5 //  Created by apple on 14-6-21. 6 //  Copyright (c) 2014年 itcase. All rights reserved. 7 // 8  9 #import "YYViewController.h"10 11 @interface YYViewController ()12 13 @end14 15 @implementation YYViewController16 17 - (void)viewDidLoad18 {19     [super viewDidLoad];20     //建立圖層21     CALayer *layer=[CALayer layer];22     //設定圖層的屬性23     layer.backgroundColor=[UIColor redColor].CGColor;24     layer.bounds=CGRectMake(0, 0, 100, 100);25     //添加圖層26     [self.view.layer addSublayer:layer];27     28 }29 30 @end

顯示效果:

         

(1)設定錨點位置為(0,0)

 1 - (void)viewDidLoad 2 { 3     [super viewDidLoad]; 4     //建立圖層 5     CALayer *layer=[CALayer layer]; 6     //設定圖層的屬性 7     layer.backgroundColor=[UIColor redColor].CGColor; 8     layer.bounds=CGRectMake(0, 0, 100, 100); 9     //設定錨點為(0,0)10     layer.anchorPoint=CGPointZero;11     //添加圖層12     [self.view.layer addSublayer:layer];13 }14 @end

顯示效果:

二、隱式動畫

1.簡單說明

每一個UIView內部都預設關聯著一個CALayer,我們可用稱這個Layer為Root Layer(根層)

所有的非Root Layer,也就是手動建立的CALayer對象,都存在著隱式動畫

什麼是隱式動畫?

當對非Root Layer的部分屬性進行修改時,預設會自動產生一些動畫效果

而這些屬性稱為Animatable Properties(可動畫屬性)

 

列舉幾個常見的Animatable Properties:

bounds:用於設定CALayer的寬度和高度。修改這個屬性會產生縮放動畫

backgroundColor:用於設定CALayer的背景色。修改這個屬性會產生背景色的漸層動畫

position:用於設定CALayer的位置。修改這個屬性會產生平移動畫

2.程式碼範例

 1 // 2 //  YYViewController.m 3 //  04-隱式動畫 4 // 5 //  Created by apple on 14-6-21. 6 //  Copyright (c) 2014年 itcase. All rights reserved. 7 // 8  9 #import "YYViewController.h"10 11 @interface YYViewController ()12 @property(nonatomic,strong)CALayer *layer;13 @end14 15 @implementation YYViewController16 17 - (void)viewDidLoad18 {19     [super viewDidLoad];20     //建立圖層21     CALayer *mylayer=[CALayer layer];22     //設定圖層屬性23     mylayer.backgroundColor=[UIColor brownColor].CGColor;24     mylayer.bounds=CGRectMake(0, 0, 150, 100);25     //顯示位置26     mylayer.position=CGPointMake(100, 100);27     mylayer.anchorPoint=CGPointZero;28     mylayer.cornerRadius=20;29     //添加圖層30     [self.view.layer addSublayer:mylayer];31     self.layer=mylayer;32 }33 34 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event35 {36     //隱式動畫37     self.layer.bounds=CGRectMake(0, 0, 200, 60);38     self.layer.backgroundColor=[UIColor yellowColor].CGColor;39 }40 @end

效果:

        

關閉隱式動畫:

1     [CATransaction begin];2     [CATransaction setDisableActions:YES];3     //隱式動畫4     self.layer.bounds=CGRectMake(0, 0, 200, 60);5     self.layer.backgroundColor=[UIColor yellowColor].CGColor;6     [CATransaction commit];

3.如何查看CALayer的某個屬性是否支援隱式動畫?

  可以查看標頭檔,看有沒有Animatable,如果有則表示支援。

也可以查看官方文檔

文檔中標明的這些屬性都是支援隱式動畫的

 

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.