作者:骏天天在线 | 来源:互联网 | 2023-02-08 21:06
我想知道在哪些情况下我们应该使用它们中的任何一种作为最合适的?
在下面的博客https://www.hackingwithswift.com/ios10中,在"动画重新访问"部分中写的示例,我们可以使用"CABasicAnimation"重新应用相同的要求,这意味着暂停和恢复动画吗?
根据我收集的内容,当我们使用UIView.animate(...)方法时,它返回一个void,因此我们将无法在完成之前控制动画,因为我们没有获得返回值来处理当我们进入UIViewPropertyAnimator时(此外,我们还有"isRunning"来检查动画的进度.)同样在CABasicAnimation中,我们没有任何进度检查来运行动画.如果我的假设是错误的,请纠正我.谢谢.
1> Daniel Larss..:
所有这些API都很棒,并且它们的用例都略有不同.
UIView的动画方法
在我看来,这些仍然是最容易使用的.非常直接的API,而不会产生太大的代码占用空间.我将其用于简单的即发即弃动画(例如在选中时弹出按钮),或者当我想制作复杂的关键帧动画时,因为它的关键帧支持它很棒.
CAAnimation
也许不那么简单直接使用,但是只要您想要为图层属性设置动画而不是视图属性,就需要它.这些的例子是角半径,阴影和边框.
UIViewPropertyAnimator
这仅在iOS10之后可用,因此您可能希望回退到旧版iOS的先前API之一.顾名思义,这是另一种基于视图的动画API.与UIView的动画方法不同的是它支持交互式动画.您可以暂停,快退和擦除动画,这使它非常强大.当我希望用户控制动画时,我会使用它.擦除通过设置动画师的fractionComplete属性来工作,该属性可以很容易地连接到平移手势识别器或力触摸识别器(或甚至使用KVO的键).
您还可以UIViewPropertyAnimator
在动画期间存储对a的引用并更改其动画或完成块.
值得注意的是,你可以实际使用UIView.animate
并UIView.animateKeyframes
从你的内UIViewPropertyAnimator
的动画块,你应该觉得有必要同时使用.
如果你想了解更多信息,我写了一篇关于在UIViewPropertyAnimator
这里使用的小教程.