* 在iOS系統中,你能看得見摸得着的東西基本上都是UIView,好比一個按鈕、一個文本標籤、一個文本輸入框、一個圖標等等,這些都是UIView。
框架
* 其實UIView之因此能顯示在屏幕上,徹底是由於它內部的一個層。spa
* 在建立UIView對象時,UIView內部會自動建立一個層(即CALayer對象),經過UIView的layer屬性能夠訪問這個層。當UIView須要顯示到屏幕上時,會調用drawRect:方法進行繪圖,而且會將全部內容繪製在本身的層上,繪圖完畢後,系統會將層拷貝到屏幕上,因而就完成了UIView的顯示。code
* 換句話說,UIView自己不具有顯示的功能,是它內部的層纔有顯示功能。orm
上面已經說過了,UIView之因此可以顯示,徹底是由於內部的CALayer對象。所以,經過操做這個CALayer對象,能夠很方便地調整UIView的一些界面屬性,好比:陰影、圓角大小、邊框寬度和顏色等。
對象
#import <QuartzCore/QuartzCore.h>
ci
你也可使用UIButton或者UILabel,這裏就以UIImageView爲例子it
UIImage *image = [UIImage imageNamed:@"lufy.png"];UIImageView *imageView = [[UIImageView alloc] initWithImage:image];imageView.center = CGPointMake(200, 200);[self.view addSubview:imageView];
#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,表明徹底不透明。
經過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,那將不會有陰影效果
#pragma mark 設置邊框
- (void)border:(UIView *)view {
view.layer.borderWidth = 5;
view.layer.borderColor = [UIColor redColor].CGColor;
}
* 第3行設置邊框寬度爲5
* 第4行設置邊框顏色爲紅色
imageView.layer.transform = CATransform3DMakeRotation(M_PI_4, 0, 0, 1);
* 利用transform屬性能夠設置旋轉、縮放等效果
* M_PI_4表示四分之π,順時針旋轉45°
* 後面的(0, 0, 1)表示Z軸這個向量,修改這個向量能夠作一些三維旋轉效果,你能夠隨便改個值試一下,好比(1, 1, 1)
* 整體的意思是layer會繞着Z軸順時針旋轉45°,也就是在x、y平面進行旋轉