美文网首页iOS开发
iOS 隐式动画 关闭 默认动画关闭

iOS 隐式动画 关闭 默认动画关闭

作者: 万年老参 | 来源:发表于2020-02-17 10:09 被阅读0次

    隐式动画:我的理解是视图移动显示都默认是有过度的,比如:

    //简单的添加view至window,(我这边出现的例子是在window上添加一个封装的输入控件)
     UIWindow * window = [UIApplication sharedApplication].keyWindow;
     self.frame = window.bounds;
     [window addSubview:self];
    

    在我这边走到这部分代码,view会有一个从零变大和移动的过度动画,
    又或者:
    播放器横屏竖屏转换的时候,默认是有一个缩放旋转的过渡动画,

    隐式动画的关闭:

        //关闭隐式动画
        [CATransaction begin];
        [CATransaction setDisableActions:YES];
        UIWindow * window = [UIApplication sharedApplication].keyWindow;
        self.commentBar.frame = window.bounds;
        [window addSubview:self.commentBar];
        [CATransaction commit];
    

    进一步了解的内容:
    需要了解core animation,CALayer,runloop。
    个人理解:CALayer即我们能看到的东西,它和看不到的东西,主要是手势交互(或着说事件响应)组成了uiview。修改CALayer的属性都可以但不是一定会生成隐式动画。
    runloop:一个有唤醒和睡眠状态,唤醒后不停循环处理事情的管家。。。。

    Core Animation动画执行的时间取决于当前事务的设置,动画类型取决于图层行为。

    事务:包含一系列属性动画集合的机制,用指定事务去改变可以做动画的图层属性不会立刻发生变化,而是当事务一旦提交的时候开始用一个动画过渡到新值.
    事务 通过CATransaction类来做管理,CATransaction可以用加号方法+begin和+commit分别来入栈或者出栈。并且遵循先进后出
    任何可以做动画的图层属性都会被添加到栈顶的事务,你可以通过+setAnimationDuration:方法设置当前事务的动画时间,或者通过+animationDuration方法来获取值(默认0.25秒)。

    相关文章

      网友评论

        本文标题:iOS 隐式动画 关闭 默认动画关闭

        本文链接:https://www.haomeiwen.com/subject/udgwfhtx.html