CALayer圖層https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/CALayer_class/index.htmlAPI
CALayer是一個層的概念,視圖之所以能夠顯示,都是因爲這個層的原因但CALayer 不清楚具體的響應鏈(不能相應用戶的點擊觸摸等事件).通過CALayer我們可以給UIView添加動畫,還可以改變它的形狀,邊框寬度,顏色等。
CALayer的兩個重要屬性position 用來設置CALayer在父層中的位置 ,以父層左上角(0,0)
anchorPoint(定位點、錨點) 決定CALayer上的點在父層中position所指的位置,以自己的左上角(0,0) , 它的x、y 取值範圍都是0 ~1 默認只爲(0.5 , 0.5)錨點在CALayer的中間
CALayer有一個控制圖層角的曲率 屬性conrnerRadius ,默認情況下這個曲率隻影響背景顏色不影響背景圖片或是子圖層 ,如果吧masksToBounds 設置爲YES時圖層裏面的所有東西都會被截取。
CALayer的簡單使用
//改變形狀
UIView *myview = [[UIView alloc]initWithFrame:CGRectMake(10, 20, 100, 200)];
myview.layer.backgroundColor = [UIColor orangeColor].CGColor;
//邊框的顏色
myview.layer.borderColor = [UIColor greenColor].CGColor;
//邊框的寬度
myview.layer.borderWidth = 5;
//允許設置圓角
myview.layer.masksToBounds = YES;
//允許設置圓角
// myview.clipsToBounds = YES;
myview.layer.cornerRadius = 10;
[self.window addSubview:myview];
UIView *myview1 = [[UIView alloc]initWithFrame:CGRectMake(100, 250, 100, 200)];
myview1.layer.backgroundColor = [UIColor greenColor].CGColor;
[self.window addSubview:myview1];
//通過transform這個key創建一個動畫
CABasicAnimation *basic = [CABasicAnimation animationWithKeyPath:@"transform"];
//第一個:弧度 第二個:x軸 第三個:y軸 第四個:z軸
basic.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(3.1415, 1.0, 0, 0)];//3D動畫,旋轉180度,以y爲軸旋轉
basic.duration = 2;//持續時間
basic.repeatCount = 2;//重複次數
basic.cumulative = YES;//是否繼續接着執行
//注意:動畫是添加到layer上面
[myview1.layer addAnimation:basic forKey:@"animation"];
//注意:不能馬上將動畫移除
// [myview1.layer removeAnimationForKey:@"animation"];
//注意:兩次動畫會合併在一起執行
CABasicAnimation *basic1 = [CABasicAnimation animationWithKeyPath:@"transform"];
basic1.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(3.1415, 0, 0, 1.0)];
basic1.duration = 2;
basic1.repeatCount = 2;
basic1.cumulative = YES;//是否繼續接着執行
[myview1.layer addAnimation:basic1 forKey:@"animatio1"];
自定義圖層
// 創建一個圖層
CALayer *layer = [CALayer layer];
// 設置尺寸
layer.bounds = CGRectMake(0, 0, 100, 100);
// 設置位置
layer.position = CGPointMake(100, 100);
// 設置顏色
layer.backgroundColor = [UIColor redColor].CGColor;
// 設置內容
layer.contents = (__bridge id)[UIImage imageNamed:@"imageName"].CGImage;
[self.view.layer addSublayer:layer];