zoukankan      html  css  js  c++  java
  • CALayer03-隐式动画

    1、每一个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层)
     
    2、所有的非Root Layer,也就是手动创建的CALayer对象,都存在着隐式动画
     
    3、什么是隐式动画?
        当对非Root Layer的部分属性进行修改时,默认会自动产生一些动画效果
        而这些属性称为Animatable Properties(可动画属性)
       列举几个常见的Animatable Properties:
       bounds:用于设置CALayer的宽度和高度。修改这个属性会产生缩放动画
       backgroundColor:用于设置CALayer的背景色。修改这个属性会产生背景色的渐变动画
       position:用于设置CALayer的位置。修改这个属性会产生平移动画

    4、隐式动画:没有告诉它执行动画,都执行动画

    5、非主layer才有隐式动画,手动创建的layer才有隐式动画。

    6、并不是所有的属性都是有隐式动画的,属性中标有animatable的是有隐式动画的,可以通过查官方文档看那些属性是可动画的,Window —>Documentation and API Reference—>搜索CALayer animatable properties,就可以看到表格中可以动画属性

    7、如何关闭默认自带的隐式动画

    - (void)viewDidLoad {
        [super viewDidLoad];
        CALayer
        *layer = [CALayer layer];
        layer.bounds = CGRectMake(0, 0, 100, 100);
        layer.backgroundColor = [UIColor redColor].CGColor;
        layer.position = CGPointZero;
        layer.anchorPoint = CGPointZero;//锚点
        [self.view.layer addSublayer:layer];
        self.layer = layer;
    }
    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
    //    [CATransaction begin];//开启事务
    //    [CATransaction setDisableActions:YES];
        self.layer.position = CGPointMake(100, 100);
    //    [CATransaction commit];//提交事务,关闭默认的隐式动画
    }

    8、可以通过动画事务(CATransaction)关闭默认的隐式动画效果

        [CATransaction begin];//开启事务
        [CATransaction setDisableActions:YES];//disable不可用
        self.layer.position = CGPointMake(100, 100);//隐式动画执行的语句
        [CATransaction commit];//提交事务
  • 相关阅读:
    内嵌WORD/OFFICE的WINFORM程序——DSOFRAMER使用小结
    安装jenkins
    excel单元测试
    参数化单元测试
    单元测试参数化
    python之继承
    冒泡算法
    打印三角形
    jmeter下载地址
    python-ddt处理测试类数据
  • 原文地址:https://www.cnblogs.com/yipingios/p/4499138.html
Copyright © 2011-2022 走看看