【问题标题】:Smoother UIView更流畅的 UIView
【发布时间】:2009-09-18 08:03:39
【问题描述】:

我正在寻找一种方法来使我的(第一个)应用程序的菜单系统滚动更顺畅。目前,我在 IB 中构建了一个全景类型视图,它的图像宽约 1900 像素,高图像高 480。 On top of this are 8 buttons in various places along the view/image, when one of the buttons is selected i update 'xPoint' and call the below to update what's on screen (between 400-600px movement each time a button gets clicked in 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 提交动画];
}

我已将 IB 中的所有内容设置为不透明,并且未选中每个按钮/图像的“绘制前清除上下文”。在 3GS 上,这似乎比 3G 设备更流畅,但仍然不完美——动画仍然卡顿。

有没有更好的方法来做到这一点?如果没有,有什么办法可以优化/平滑运动动画?

【问题讨论】:

  • 每个视图的维度最多应为 1024。如果超过此值,就会发生奇怪的事情

标签: objective-c iphone


【解决方案1】:

您绝对应该使用工具来调试此问题(除非有人立即给出答案)。您可以轻松调试帧速率 + 查看哪些图层是不透明/透明的(使用 Core Animation 工具中的“混合图层”选项..

同时,测量其他设备活动(这可能是问题所在)。

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

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

【讨论】:

  • 嗨,谢谢你……我以前没用过CA仪器……很有趣!根据动画时的仪器帧速率并没有低于 45ish,但我仍然看到动画混蛋所以尝试了“最后的手段”。这很好用 - 我在动画之前为所有按钮设置了隐藏关闭/打开,它明显更流畅,仍然不是 完美 但要好得多。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多