在我看来,第一次运行动画(如UIView的帧动画或CALayer的位置动画等)时会非常卡顿,而后续的动画则很流畅。
是什么原因导致了这种情况?有没有办法预缓存动画?
注意:这个问题与UIImageView首次运行动画卡顿相似,但我的动画中没有使用UIImages。
在我看来,第一次运行动画(如UIView的帧动画或CALayer的位置动画等)时会非常卡顿,而后续的动画则很流畅。
是什么原因导致了这种情况?有没有办法预缓存动画?
注意:这个问题与UIImageView首次运行动画卡顿相似,但我的动画中没有使用UIImages。
[UIImage imageNamed: @"herp.png"]
,则该图像将被缓存。如果该图像被频繁绘制,则会被解压到内存中,否则它将进行惰性加载并导致卡顿。[UIView animate...]
来动画化其框架。第一次运行时会出现停顿,而在它回到原始视图并再次触发动画后,它就会变得流畅。 - ryleigh在viewDidAppear
中运行它,而不是viewWillAppear
。缓存应该在图像已经出现后发生,并且对用户来说应该看起来相同。
viewWillAppear
,因为我希望有一种方法可以在用户看到它们之前播放它们(这听起来很傻)。 - ryleighposition
、colors
和borderColor
的隐式动画,CAShapeLayer的backgroundColor
的隐式动画以及CAShapeLayer的shadowPath
的CABasicAnimation。在这种情况下,卡顿并不是那么明显或干脆 - 但它肯定似乎在动画播放时(长时间未播放后)会出现卡顿,如果反复播放,则是流畅的。就像轮子一样,它正在创建一个好的凹槽以平稳地运行,以强制打个比方。 - ryleigh