• CALayer的隐式动画和显式动画


    隐式事务

    任何对于CALayer属性的修改,都是隐式事务,都会有动画效果.这样的事务会在run-loop中被提交.

    - (void)viewDidLoad {
        //初始化一个layer,添加到主视图
        layer=[CALayer layer];
        layer.bounds = CGRectMake(0, 0, 200, 200);
        layer.position = CGPointMake(160, 250);
        layer.backgroundColor = [UIColor redColor].CGColor;
        layer.borderColor = [UIColor blackColor].CGColor;
        layer.opacity = 1.0f;
        [self.view.layer addSublayer:layer];    
    
        [super viewDidLoad];
    }
    
    -(IBAction)changeLayerProperty {
        //设置变化动画过程是否显示,默认为YES不显示
    
        [CATransaction setDisableActions:NO];    //  设置是否启动隐式动画
        layer.cornerRadius = (layer.cornerRadius == 0.0f) ? 30.0f : 0.0f;    //   设置圆角
        layer.opacity = (layer.opacity == 1.0f) ? 0.5f : 1.0f;   // 设置透明度
    }

    显式事务

    显式事务,通过明确的调用begin,commit来提交动画

    [CATransaction begin];
    
        //显式事务默认开启动画效果,kCFBooleanTrue关闭
        [CATransaction setValue:(id)kCFBooleanFalse forKey:kCATransactionDisableActions];
    
        //动画执行时间
        [CATransaction setValue:[NSNumber numberWithFloat:5.0f] forKey:kCATransactionAnimationDuration];
    
        //[CATransaction setAnimationDuration:[NSNumber numberWithFloat:5.0f]];
    
        layer.cornerRadius = (layer.cornerRadius == 0.0f) ? 30.0f : 0.0f;
        layer.opacity = (layer.opacity == 1.0f) ? 0.5f : 1.0f;
    
        [CATransaction commit];
  • 相关阅读:
    WinForm常用代码
    XML编程与应用-读取XML
    基础SQL语句
    WPF基础——继承
    wpf控件
    手机网页支付
    Application_Start 多次启动问题
    更改Outlook 2013中Exchange数据文件存放路径
    MySql双机热备份
    图片轮播(Jquery)
  • 原文地址:https://www.cnblogs.com/H7N9/p/4888836.html
Copyright © 2020-2023  润新知