更流畅的UIView

时间:2009-09-18 08:03:39

标签: objective-c iphone

我正在寻找一种方法让我(第一个)应用程序的菜单系统更顺畅地滚动。目前我有一个内置于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设备更平滑,但仍然不完美 - 仍然在动画上口吃。

有更好的方法吗?如果没有,我有什么方法可以优化/平滑运动动画?

1 个答案:

答案 0 :(得分:1)

你绝对应该使用工具来调试这个问题(除非有人立即得到答案)。您可以轻松调试帧率+查看哪些图层是不透明/透明的(使用Core Animation乐器中的'混合图层'选项..

此外,同时测量其他设备活动(可能是问题)。

作为最后的手段,您还可以使用图像来显示按钮。创建菜单的“屏幕截图”,然后制作幻灯片(这只是一个项目,一个UIImageView)。在动画完成之后(或之前),您可以使用真实的UIView快速替换UIImageView,包括按钮。

我相信苹果在退出应用程序时也会使用这种技巧(一种形式);你看到应用程序变得越来越小,直到它消失。