CALayer

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隐式动画属性列表



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值