美文网首页
iOS动画简介

iOS动画简介

作者: 你weixiao的时候很美 | 来源:发表于2019-01-12 15:42 被阅读7次
    1. 参考书:Core Animation

    首先介绍一本书:Core Animation 链接:iOS核心动画高级技巧 这本书是关于CoreAnimation的。

    Core Animation是一个复合引擎,它的职责就是尽可能快地组合屏幕上不同的可视内容,这个内容是被分解成独立的图层,存储在一个叫做图层树的体系之中。于是这个树形成了UIKit以及在iOS应用程序当中你所能在屏幕上看见的一切的基础。

    动画是CoreAnimation的其中一个功能。

    2.CALayer
    1. iOS中,每个视图都有一个图层属性,即backing layer。图层是真正在屏幕上显示和做动画的。 而视图封装了图层,提供了触摸交互功能,以及CoreAnimation底层方法的高级接口。

    2.layer 有2个属性一个是modelLayer, 一个是presentationLayer。 当layer属性改变的时候,立即将新值存入modelLayer中。presentationLayer表示呈现层, 它的属性值代表了在任何指定时刻当前外观效果。

    3.隐式动画

    1.Core Animation假设屏幕上所有的东西都可以做动画。CoreAnimation根据事务的设置来做动画。 事务用CATransaction类来管理的,CATransaction有begin 和commit方法,layer的属性的改变被事务记录。Core Animation在每个run loop周期中自动开始一次新的事务(run loop是iOS负责收集用户输入,处理定时器或者网络事件并且重新绘制屏幕的东西),即使你不显式的用[CATransaction begin]开始一次事务,任何在一次run loop循环中属性的改变都会被集中起来,然后做一次0.25秒的动画。

    2.为何我们改变uiview属性的时候没有动画? 因为view关联的图层的隐式动画被禁用了。对这种图层做动画的唯一办法就是使用UIView的动画函数(而不是依赖CATransaction),或者继承UIView,并覆盖-actionForLayer:forKey:方法,或者直接创建一个显式动画

    4.显式动画

    1.显式动画即我们主动给图层添加一个新事务。包括属性动画 ,和过渡动画。

    显示动画都需要3个步骤:

    • 初始化动画对象,
    • 设置需要修改的属性的值,
    • 把动画添加到layer上。

    2.属性动画是对一个layer的属性来做动画,使用keyPath来标记对哪个属性做动画,包括:

    • CABaseAnimation,使用fromValue和toValue来表示属性变化的值。
    • CAKeyFrameAnimation(对要动画的属性设置多个关键值),使用values 或者path来表示属性变化的值。

    3.当想对layer的多个属性做动画的时候,可以使用CAAnimationGroup。把单个属性动画做成一个动画组。

    layer常用的做动画的属性:

    • backgrounColor(颜色),
    • position(位置移动,可以沿着某个path来移动)
    • transform.rotate (图层形变:旋转),transform.scale(图层形变:大小),transform.transation(图层形变:x,y轴移动)
    • path (从一个path到另一个path的动画)

    4.过渡动画:如果要改变一个不能动画的属性(比如图片),或者从层级关系中添加或者移除图层,属性动画将不起作用。需要使用过渡动画。

    使用CATransition类来做过渡动画。CATransition有一个type和subtype来标识变换效果,官方目前有4种:

    • kCATransitionFade (默认)
    • kCATransitionMoveIn
    • kCATransitionPush
    • kCATransitionReveal

    相关文章

      网友评论

          本文标题:iOS动画简介

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