CoreAnimation-CATransaction

CATransaction事务类,可以对多个layer的属性同时进行修改.它分隐式事务,和显式事务.

1、隐式动画通过隐式事务实现动画 。(除显式事务外,任何对于CALayer属性的修改,都是隐式事务.这样的事务会在run-loop中被提交.

     layer = [CALayer layer];
    //设置layer高清显示
    [_layer setContentsScale:[[UIScreen mainScreen] scale]];
    //设置背景颜色
    [_layer setBackgroundColor:[UIColor blueColor].CGColor];
    //设置大小
    [_layer setBounds:CGRectMake(0.0, 0.0, 200.0, 200.0)];
    
    CGPoint anchorPoint = {0.5, 0.0};
    //anchorPoint(锚点),它的取值在0-1,取到1就表示离原点最远。ios的坐标系原点在左上角。
    [_layer setAnchorPoint:anchorPoint];
    //方法告诉layer将位于它之下的layer都遮盖住。这是必须的,这样会使圆角不被遮,但是这样会导致阴影效果没有,很多网上都给出资料,再添加一个SubLayer,添加阴影
    [_layer setMasksToBounds:NO];


//此方法传入NO启动隐式动画
    [CATransaction setDisableActions:![_enableAnimations isOn]];
//设置动画时间
    [CATransaction setAnimationDuration:_animationDuration];
//设置layer的圆角半径
    [_layer setCornerRadius:([_layer cornerRadius] == 0.0 ? 25.0 : 0.0)];
//设置背景颜色
    [_layer setBackgroundColor:([_layer backgroundColor] == [UIColor blueColor].CGColor ? [UIColor greenColor].CGColor : [UIColor blueColor].CGColor)]; 
//设置边框宽度
    [_layer setBorderWidth:([_layer borderWidth] == 0.0 ? 10 : 0.0)];
//设置透明度
    [_layer setOpacity:([_layer opacity] == 1.0 ? 0.2 : 1.0)];


2、显式动画有多种实现方式,显式事务是一种实现显式动画的方式。 (通过明确的调用begin,commit来提交动画
    //开始动画
    [CATransaction begin];
   //显式事务默认开启动画效果,kCFBooleanTrue关闭
    [CATransaction setValue:(id)kCFBooleanFalse forKey:kCATransactionDisableActions];
   //动画执行时间
    [CATransaction setValue:[NSNumber numberWithFloat:5.0f] forKey:kCATransactionAnimationDuration];
   //开始提交执行动画
    [CATransaction commit];
//当外层的layer 执行(commit)之后内层的动画才会开始执行(commit)




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值