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];//提交事务
  • 相关阅读:
    [转] 一封程序员的情书
    [**收集**]实用的网站
    [转] 绝对实用!60款免费软件逐个点评下载
    [*日语学习笔记*] 大家的日语初级1动词活用笔记
    [转] IT人不可不听的10个职场故事
    【转图】从可乐到NIKE 经典logo的web2.0版
    [转] 常用姓氏读法
    [转] 数据库开发个人总结(ADO.NET小结)
    [转] VB十七种可用一行代码完成的技巧
    [转] 程序员爱情观XP版本 (敏捷版本)
  • 原文地址:https://www.cnblogs.com/yipingios/p/4499138.html
Copyright © 2011-2022 走看看