我正在寻找一种方法让我(第一个)应用程序的菜单系统更顺畅地滚动。目前我有一个内置于IB的panorma类型视图,宽约1900像素,高480像素。除此之外,在视图/图像的不同位置有8个按钮,当选择其中一个按钮时,我更新'xPoint'并调用下面的内容来更新屏幕上的内容(每次点击一个按钮时,动作在400-600px之间) 1-2秒持续时间):
-(void)moveView:(NSNumber *)duration{ [UIView beginAnimations:nil context:NULL];{ [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; [UIView setAnimationDuration:[duration floatValue]]; [UIView setAnimationDelegate:self]; viewRect = self.view.frame; viewRect.origin.x = xPoint; self.view.frame = viewRect; } [UIView commitAnimations]; }
我已将IB中的所有内容设置为不透明,并且对于每个按钮/图像都未选中“在绘制前清除上下文”。在3GS上,这看起来比3G设备更平滑,但仍然不完美 - 仍然在动画上口吃。
有更好的方法吗?如果没有,我有什么方法可以优化/平滑运动动画?
答案 0 :(得分:1)
你绝对应该使用工具来调试这个问题(除非有人立即得到答案)。您可以轻松调试帧率+查看哪些图层是不透明/透明的(使用Core Animation乐器中的'混合图层'选项..
此外,同时测量其他设备活动(可能是问题)。
作为最后的手段,您还可以使用图像来显示按钮。创建菜单的“屏幕截图”,然后制作幻灯片(这只是一个项目,一个UIImageView)。在动画完成之后(或之前),您可以使用真实的UIView快速替换UIImageView,包括按钮。
我相信苹果在退出应用程序时也会使用这种技巧(一种形式);你看到应用程序变得越来越小,直到它消失。