1

我有一个根视图控制器,它最多有 10 个左右的子视图。我正在整个应用程序中实现自动旋转/自动调整大小。

我的问题是: - 当我在启动期间分配所有视图控制器并将每个视图控制器作为子视图添加到根控制器时,一切正常。唯一的问题是每个视图控制器都需要时间来初始化。这会导致我的应用程序加载非常缓慢。

  • 相反,我试图根据需要分配视图控制器。现在我发现如果应用程序进入横向,并且我分配了一个纵向设计的视图控制器,它将自动旋转但不会发生自动调整大小。

  • 换句话说,只要将子视图以纵向模式添加到根控制器,它就会正确旋转和调整大小(并保持这种状态)。如果在根控制器处于横向时添加了子视图,它会旋转但不会自动调整大小(并且视图大小仍然混乱旋转回纵向)

  • 我试图通过调用 SetNeedsLayout、SetNeedsDisplay 和 LayoutIfNeeded 来强制自动调整大小,但没有任何效果。我知道我可以通过确定根控制器的方向并适当地调整子视图的大小来手动执行此操作,但这对于应该自动工作的东西来说是很多工作。

  • 我错过了什么吗?任何帮助,将不胜感激。我的项目是来自 iPhone 应用程序的 iPad 端口,iPhone 应用程序不会旋转,所以我不确定这是否可能是 3.2 测试版的问题。

4

1 回答 1

2

在与此搏斗了一段时间后,我将以下代码添加到了我的子视图中。它在视图添加到根视图控制器后执行。到目前为止,它似乎工作。

-

(void) AdjustFrame{
 UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];
 if((interfaceOrientation == UIInterfaceOrientationLandscapeLeft)||(interfaceOrientation == UIInterfaceOrientationLandscapeRight))
 {
  CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
  CGRect newFrame =  CGRectMake(0.0, 0.0, applicationFrame.size.height, applicationFrame.size.width);
  [self.view setFrame:newFrame];
  [self.view setNeedsDisplay];


 }   
}
于 2010-04-09T21:30:57.403 回答