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];