2011-05-06 50 views
2

我在我的应用程序中实现了一个简单的动画。我通过使用CABasicAnimation的四个图像帧之间的交叉淡入来实现动画,其具有from和value值设置为(id)(myimage.CGImage)。该动画独立于CALayer,但在自己的小型子视图中滚动弹出的UITextView时,在帧混合过程中文本滚动非常干燥,并在滚动时暂停动画。将动画放在自己的线程中是否可以缓解问题,或者这仅仅是由Core Animation完成的复杂操作?在CABasicAnimation运行时,Laggy在UITextView中滚动

感谢您的帮助!

+0

我继续前进,并将动画添加到单独的线程,但它似乎没有使任何更流畅。我错过了什么吗?我想现在我的问题是UI动画可以发送到一个单独的线程,或者他们总是在主线程中运行? – ThisDarkTao 2011-05-07 08:21:19

+0

由于我看到类似的问题,并希望这个问题得到解答,我提供了一个奖励。 – DarkDust 2011-05-09 06:46:10

+0

+1有类似的问题,希望有很好的答案。 – 2011-05-09 09:28:45

回答

3

您可以将UI动画发送到单独的线程,但对应用程序的UI的任何实际更新始终由主线程处理/绘制。所以从这个意义上讲,我认为增加额外的线程是不会有帮助的,特别是如果你已经尝试过,并且仍然不能给出可接受的结果。

我能想到的唯一可能会帮助的是使用OpenGL渲染动画而不是Core Animation。这将从图片中抽取一个完整的抽象层,并且应该加速一些结果。当然,它也可能需要更多的代码来完成同样的事情,所以肯定会有一个折衷。

+0

好吧,从几乎所有的角度来看它,并试图使这项工作,我认为它是安全的,假设没有人真的有任何答案。猜猜我只需要重新考虑应用程序并删除UITextView。有点恼火苹果没有解决这个问题。 – ThisDarkTao 2011-05-11 09:17:57