如何在 iOS 中获得最流畅的动画?

Posted

技术标签:

【中文标题】如何在 iOS 中获得最流畅的动画?【英文标题】:How do I get the smoothest animation possible in iOS? 【发布时间】:2012-10-19 21:43:09 【问题描述】:

我正在使用UIView 方法animateWithDuration:animations 为滑动UIView 设置动画。它看起来有点波涛汹涌。有没有更好的方法,比如 CoreGraphics,可以实现更流畅的动画?

【问题讨论】:

如果您所做的只是滑动视图,animateWithDuration 是一个非常好的选择,并且应该提供合适的结果。如果它看起来波涛汹涌,那么您可能还遗漏了另一个问题。另一种动画方法是使用 CABasicAnimation 之类的东西,当您移动层的位置属性(或 CALayer 的另一个可动画属性)时,它可能会添加到您尝试动画/滑动的视图层中。 您应该查看该视图有多少子视图(标签、图像等)都计入其开销。如果这些视图不透明,则动画性能可能会受到影响。还要小心使用较旧或蹩脚的图形卡在 Mac 上的模拟器中测试动画性能。我见过 Retina Simulator 有断断续续的动画,但在实际设备上动画很流畅。 请注意,ios Core Animation 在模拟器上通常很不稳定,但在设备上运行流畅。确保在设备上进行测试。还要确保你测试你的应用程序运行时没有绑定到 Xcode,因为调试器会减慢速度。 【参考方案1】:

您可以尝试使用不同的UIViewAnimationOptions

默认是UIViewAnimationOptionCurveEaseInOut,但是你可以试试其他的:

[UIView animateWithDuration:1.0
                      delay:0.0
                    options:UIViewAnimationOptionCurveEaseOut
                 animations:^
                     v.center = CGPointMake(400, 400);
                 
                 completion:^(BOOL finished) 

                 
 ];

【讨论】:

以上是关于如何在 iOS 中获得最流畅的动画?的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 如何制作动画轨迹

如何为大型网格实现 VBO 并获得流畅的动画?

如何制作流畅的滚动动画?

UINavigationController 在 iOS 7 中推送动画不流畅

如何使 SVG 动画无缝流畅?

如何使用流畅的动画从页面视图中删除页面?