CALayer的使用

1、什麼是CALayer

* 在iOS系統中,你能看得見摸得着的東西基本上都是UIView,好比一個按鈕、一個文本標籤、一個文本輸入框、一個圖標等等,這些都是UIView。
框架

* 其實UIView之因此能顯示在屏幕上,徹底是由於它內部的一個spa

* 在建立UIView對象時,UIView內部會自動建立一個(即CALayer對象),經過UIView的layer屬性能夠訪問這個層。當UIView須要顯示到屏幕上時,會調用drawRect:方法進行繪圖,而且會將全部內容繪製在本身的上,繪圖完畢後,系統會將拷貝到屏幕上,因而就完成了UIView的顯示。code

* 換句話說,UIView自己不具有顯示的功能,是它內部的纔有顯示功能。orm

2、CALayer的簡單使用

上面已經說過了,UIView之因此可以顯示,徹底是由於內部的CALayer對象。所以,經過操做這個CALayer對象,能夠很方便地調整UIView的一些界面屬性,好比:陰影、圓角大小、邊框寬度和顏色等。
對象

2.在項目代碼中導入QuartzCore框架的主頭文件

#import <QuartzCore/QuartzCore.h>
ci


3.經過CALayer修改UIImageView的界面屬性

你也可使用UIButton或者UILabel,這裏就以UIImageView爲例子it

1> 先建立一個UIImageView,添加到控制器的view中

UIImage *image = [UIImage imageNamed:@"lufy.png"];UIImageView *imageView = [[UIImageView alloc] initWithImage:image];imageView.center = CGPointMake(200, 200);[self.view addSubview:imageView];


2> 設置陰影

 #pragma mark 設置陰影效果

- (void)shadow:(UIView *)view {io

    // 設置陰影爲灰色form

    view.layer.shadowColor = [UIColor redColor].CGColor;import

    // 設置陰影的誤差

    view.layer.shadowOffset = CGSizeMake(10, 10);

    // 設置層的不透明度(半透明)

    view.layer.shadowOpacity = 0.5f;

}




* 第1行設置陰影的顏色爲灰色,注意,這裏使用的是UIColor的CGColor屬性,是一種CGColorRef類型的數據

* 第2行設置陰影的偏移大小,能夠看出陰影往原圖的右下角偏移

* 第3行設置陰影的不透明度爲0.5,表示半透明。若是爲1,表明徹底不透明。

3> 設置圓角大小

經過layer屬性能夠訪問視圖內部的CALayer對象


#pragma mark 設置圓角效果

- (void)corner:(UIView *)view {

    // 設置圓角半徑爲10

    view.layer.cornerRadius = 10;

    // 強制內部的全部子層跟隨layer的邊界效果

    // 設置爲YES後,不能顯示陰影效果

    view.layer.masksToBounds = YES;

}


* 第4行設置圓角半徑爲10

* 第7行的maskToBounds=YES:能夠看作是強制內部的全部子層支持圓角效果,少了這個設置,UIImageView是不會有圓角效果的

* 注意,若是設置了maskToBounds=YES,那將不會有陰影效果

4> 設置邊框寬度和顏色

#pragma mark 設置邊框

- (void)border:(UIView *)view {

    view.layer.borderWidth = 5;

    view.layer.borderColor = [UIColor redColor].CGColor;

}




* 第3行設置邊框寬度爲5

* 第4行設置邊框顏色爲紅色

 

5> 設置旋轉

imageView.layer.transform = CATransform3DMakeRotation(M_PI_4, 0, 0, 1);

* 利用transform屬性能夠設置旋轉、縮放等效果

* M_PI_4表示四分之π,順時針旋轉45&deg;

* 後面的(0, 0, 1)表示Z軸這個向量,修改這個向量能夠作一些三維旋轉效果,你能夠隨便改個值試一下,好比(1, 1, 1)

* 整體的意思是layer會繞着Z軸順時針旋轉45&deg;,也就是在x、y平面進行旋轉

相關文章
相關標籤/搜索