CALayer:层,每一个UIView都至少有一个layer,也就是它的根layer;
CALayer和UIView的关系:
CALayer继承于NSObject,而UIView继承于UIResponder,所以view可以相应touch事件,layer不可以。
UIView和CALayer是包含关系,view的根layer负责view的图形绘制(展示功能),而view负责交互。
layer可以添加子layer,和view添加子视图相似
self.view.layer addSublayer:layer];
layer一般不使用frame,而是使用bounds+position
layer.bounds = CGRectMake(0,0,100,100);
position设置的是锚点坐标
layer.position = self.view.center;
anchorPoint:锚点,默认值是0.5,同时也是动画的参照点
layer.anchorPoint = CGPointMake:(0.5,0.5);
contents设置layer的内容,只能设置图片,而且必须是CGImage
layer.contents = (id)[[UIImage imageNamed:@"
"
]CGImage];
设置layer圆角半径
layer.cornerRadius = 20;
设置边界裁剪
layer.maskToBounds = YES;
设置边框线宽度
layer.borderWidth = 5;
设置边框线颜色
layer.borderColor = [[UIColor redColor]CGColor];
设置透明度
layer.shadowOpacity = 0.7;
设置阴影位置
layer.shadowOffset = CGSizeMake(10,10);
设置阴影颜色
layer.shadowColor = [[UIColor blackColor]CGColor];
设置阴影的半径(模糊程度)
layer.shadowRadius = 7;
设置layer的变形属性
layer.transform = CATransform3DMakeRotation(30*M_PI/180,0,0,1);
把两个变形属性合在一起
_myView.transform = CGAffineTransformConcat(CGAffineTransformMakeRotation(45*M_PI/180), CGAffineTransformMakeScale(1,1));
设置layer的梯度(Gradient)
CAGradientLayer *lay = [CAGradientLayer alloc]init];
设置梯度的起始位置
lay.startPoint = CGPointMake(0,0.5);
设置梯度的结束位置
lay.endPoint = CGPointMake(1,0.5);
layer的大部分属性在修改时本身就带有动画,这个动画叫做隐式动画
关闭layer的隐式动画,
CATransaction 事务类,用于控制layer的隐式动画
[CATransaction setDisableActions:YES];
设置动画开始
[
CATransaction begin];
设置动画时间
[
CATransaction setAnimationDuration:2];
设置动画速率
[
CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];
提交动画
[CATransaction commit];
layer隐式动画属性列表
layer隐式动画属性列表
