如何旋转图像视图而不滞后?

Posted

技术标签:

【中文标题】如何旋转图像视图而不滞后?【英文标题】:How to rotate imageview without lagging? 【发布时间】:2013-06-11 19:22:42 【问题描述】:

我在我的应用程序中集成了一个指南针,但问题是旋转它时图像视图滞后。我怎样才能解决这个问题,让它像苹果的应用程序一样以一种很好的方式旋转?

这是我正在使用的代码:

float heading = -1.0f * M_PI * degree / 180.0f;
[UIView animateWithDuration:1.0f delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^
    self.compassImageView.transform = CGAffineTransformMakeRotation(heading);
 completion:nil];

这是指南针:

http://i.stack.imgur.com/JXF9A.png

【问题讨论】:

您多久调用一次此代码? 嗯,那是多久一次?您以什么频率从指南针中提取新数据?因为现在听起来你有多个相互对抗的动画。 每 1° 我旋转图像视图。 【参考方案1】:

只需摆脱 animateWithDuration 持续时间。你不需要它。我猜你想要它,因为你希望动作流畅,但我有一个类似的应用程序可以显示滚动和俯仰,我只是打电话

tiltImage.transform = CGAffineTransformMakeRotation(DegreesToRadians(angle));

而且动作很流畅。

你在这里想多了。 (JustSid 是对的。)

【讨论】:

我按照你刚才说的做了,但仍然滞后。 尝试更多优化。如果你和上次在同一个方向,就不要旋转。 你的 NSLog 有延迟吗?意思是,它们是显示跳跃的坐标还是平滑的?如果你像这个答案建议的那样完全取出动画,那么只会留下你必须在导致延迟的主线程(GUI)上调用其他东西的答案。为您的 DegreesToRadians(angle) 结果放置一个 NSLog 并观察它的更新。

以上是关于如何旋转图像视图而不滞后?的主要内容,如果未能解决你的问题,请参考以下文章

HJCached 图像导致表格视图滞后

如何通过底部中心旋转图像?

Android:旋转图像而不将其加载到内存中

UIImageView 旋转而不移动图像

如何使用纬度和经度旋转图像

iOS 集合视图滚动滞后