• 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];//提交事务
  • 相关阅读:
    request.getDispatcher().forward(request,response)和response.sendRedirect()的区别
    处理get中文乱码
    在oracle里,如何取得本周、本月、本季度、本年度的第一天和最后一天的时间
    js 获取 本周、上周、本月、上月、本季度、上季度的开始结束日期
    Oracle 查询今天、昨日、本周、本月和本季度的所有记录
    CASE WHEN 及 SELECT CASE WHEN的用法
    漳州台的八边形坐标
    ubuntu16.04下下载baiduyun大文件
    ubuntu16.04下gmt5.4.1 中文支持
    ubuntu16.04下wps的安装
  • 原文地址:https://www.cnblogs.com/yipingios/p/4499138.html
Copyright © 2020-2023  润新知