【问题标题】:iphone landscape mode slowiphone横向模式慢
【发布时间】:2011-01-04 23:41:39
【问题描述】:

我在横向模式下开发的 iphone 应用程序非常糟糕。我把它放在纵向进行比较,它似乎在那个方向上运行得更顺畅。我并没有做我认为是过程密集型的事情:地图视图、一些按钮、一些标签和一些石英绘图,但一些基本的石英动画严重减慢了非常糟糕的速度。

有谁知道横向模式与纵向相比是否存在严重缺陷,和/或如果是,是否有更好的方法来创建横向应用程序?我只是使用一个旋转 90 度的根旋转视图并将我的所有子视图附加到它。

谢谢。

【问题讨论】:

  • 你能运行 Instruments 并使用 Sampler instrument 来查看时间花在了哪里吗?分析代码是找出哪里慢的最好方法。

标签: iphone optimization performance landscape


【解决方案1】:

在渲染性能方面,横向和纵向应该没有真正的区别。您是否使用变换将主视图旋转 90 度?我相信,从 iPhone OS 2.1 开始,您不再需要手动对主视图应用转换以使其以横向启动。为了强制横向,我所要做的就是将此委托方法放在我的应用程序委托中:

- (void)application:(UIApplication *)application willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation duration:(NSTimeInterval)duration;
{
    // This prevents the view from autorotating to portrait in the simulator
    if ((newStatusBarOrientation == UIInterfaceOrientationPortrait) || (newStatusBarOrientation == UIInterfaceOrientationPortraitUpsideDown))
        [application setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO];
}

以及我的根视图控制器中的以下内容:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{
    return ( (interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIInterfaceOrientationLandscapeRight));
}

【讨论】:

  • 我很想试试这个,但有一个问题。我不使用界面生成器,所以没有根视图控制器,至少我不知道。我应该将第二个 sn-p 添加到特别的东西吗?我有一个应用委托,但没有根视图控制器。
  • 您创建应用程序窗口的子视图的第一个视图是什么?它的控制器应该是我在这里指的根视图控制器。
  • 据我所知,第一个子视图没有控制器,或者我很困惑?如果肯定有控制器,有没有办法从视图中引用它的控制器?是否所有视图都以某种方式绝对路由回父控制器,或者,如果没有,是否有一种简单的方法可以将视图指定为视图控制器的视图,只需分配一个并将视图设置为 viewController.view,或者该控制器需要以某种方式进一步连接到应用程序中吗?
  • 为了符合模型-视图-控制器设计模式,您应该为您在 iPhone 上呈现的全屏视图提供某种控制器。您的业​​务逻辑应该驻留在此视图控制器中,而不是视图或模型对象中。如果您不使用 Interface Builder,您可以在其 -loadView 中创建并分配一个由 UIViewController 管理的视图。
【解决方案2】:

也许你做了一些导致非整数像素位置的除法(比如 0.76 )。当我有非整数像素位置时,我遇到了一些性能问题。 (虽然我不完全确定这些是有联系的。但也许它对你有帮助)

【讨论】:

    【解决方案3】:

    谢谢大家的建议和帮助。我尝试了布拉德关于设置视图控制器自动旋转设置的建议,效果非常好。我认为这是导致经济放缓的一个重要因素。

    【讨论】:

      猜你喜欢
      • 2010-12-10
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-01
      • 2010-12-07
      • 1970-01-01
      相关资源
      最近更新 更多