美文网首页
iOS中的显示动画(属性动画)

iOS中的显示动画(属性动画)

作者: 浪呀么浪打浪 | 来源:发表于2020-07-08 20:28 被阅读0次

CABasicAnimation

当更新属性的时候,我们需要设置一个新的事务,并且禁用图层行为。否则动画会发生两次,一个是因为显示的CABasicAnimation,另一个是因为隐式动画。

动画本身会作为一个参数传入委托的方法,也许你会认为可以控制器中把动画存储为一个属性,然后在回调用比较,但实际上不起作用,因为委托传入的动画参数是原始值的一个深拷贝,从而不是同一个值。CAAnimation实现了KVC协议。但是CAAnimation有一个不同的性能:它更像是一个NSDictionary,可以让你随意设置键值对,即使和你使用的动画所声明的属性并不匹配。

CAKeyframeAnimation

CABasicAnimation揭示了大多数隐式动画背后依赖的机制,但是显示的给图层添加CABasicAnimation相较于隐式动画而言,费力不讨好。

CAKeyframeAnimation同样是CAPropertyAnimation的一个子类,它依然作用于单一的一个属性,但是和CABasicAnimation不一样的是,它不限制于设置一个起始和结束的值,而是可以根据一连串随意的值来做动画。

CAKeyframeAnimation并不能自动把当前值作为第一帧。动画会在开始的时候突然跳到第一帧的值,然后在动画结束的时候恢复到初始值。

CAKeyframeAnimation有另一种方式去指定动画,就是使用CGPath。path属性可以用一种直观的方式,使用CoreGraphics函数定义运动序列来绘制动画。可以使用一个三次倍赛尔曲线,它是一种使用开始点,结束点和另外两个控制点来定义形状的曲线。

虚拟属性

属性动画实际上是针对于关键路径而不是一个键,这就意味着可以对子属性甚至是虚拟属性做动画。

为了旋转图层,我们可以对transform.rotation关键路径应用动画,而不是transform本身。

用transform.rotation而不是transform做动画的好处:

可以不通过关键帧一步旋转多于180度的动画;

可以用相对值而不是绝对值旋转;

可以不用创建CATransform3D,而是使用一个简单的数值来指定角度。

不会和transform.position或者transform.scale冲突。

transform.rotation属性其实并不存在。这是因为CATransform3D并不是一个对象,实际上是一个结构体,也没有符合kvc相关属性,transform.rotation实际上是一个CALayer用于处理动画变换的虚拟属性。

不可以直接设置transform.rotation或transform.scale,他们不能直接使用。当对他们做动画时,CoreAnimation自动地根据通过CAValueFunction来计算的值更新transform属性。

相关文章

  • iOS中的显示动画(属性动画)

    CABasicAnimation 当更新属性的时候,我们需要设置一个新的事务,并且禁用图层行为。否则动画会发生两次...

  • iOS动画

    iOS动画有隐式和显示之分。隐式动画指的是,无须创建动画对象,只需改变动画层的属性,让核心动画自己去完成动画效果,...

  • 《iOS动画》读书笔记·内容层动画

    《iOS动画》读书笔记·前序《iOS动画》读书笔记·显示层动画《iOS动画》读书笔记·内容层动画《iOS动画》读书...

  • 《iOS动画》读书笔记·显示层动画

    《iOS动画》读书笔记·前序《iOS动画》读书笔记·显示层动画《iOS动画》读书笔记·内容层动画《iOS动画》读书...

  • 《iOS动画》读书笔记·前序

    《iOS动画》读书笔记·前序《iOS动画》读书笔记·显示层动画《iOS动画》读书笔记·内容层动画《iOS动画》读书...

  • 《iOS动画》读书笔记·转场动画

    《iOS动画》读书笔记·前序《iOS动画》读书笔记·显示层动画《iOS动画》读书笔记·内容层动画《iOS动画》读书...

  • iOS动画小总结

    iOS动画,对于开发者来说是一把利器,如果运用好。iOS中的动画: 1.UIImageView动画: 2.属性动画...

  • 属性动画animator

    属性动画和传统动画的区别 传统动画只是具有显示的效果,不会正真改变位置、属性动画则相反 传统动画的写法 属性动画的...

  • iOS Animation创建及使用

    iOS 实现的基本动画 头尾式动画 2.block动画的方法 iOS显示关键帧动画 关键帧动画 动画的创建和使用 ...

  • iOS核心动画高级技巧六(显式动画)

    目录 属性动画动画组过渡在动画过程中取消动画总结 序言 前面介绍了隐式动画的概念。隐式动画是在iOS平台创建动态用...

网友评论

      本文标题:iOS中的显示动画(属性动画)

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