如何旋转图像视图而不滞后?
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 并观察它的更新。以上是关于如何旋转图像视图而不滞后?的主要内容,如果未能解决你的问题,请参考以下文章