我有一个根视图控制器,最多可包含10个子视图。 我正在整个应用程序中实现自动旋转/自动调整。
我的问题是: - 当我在启动期间分配所有视图控制器并将每个视图控制器作为子视图添加到根控制器时,一切正常。唯一的问题是每个视图控制器都需要时间来初始化。这会导致我的应用程序加载速度非常慢。
相反,我正在尝试按需要分配视图控制器。现在我发现如果应用程序进入Landscape,并且我分配了一个以纵向设计的视图控制器,它将自动旋转,但自动调整不会发生。
换句话说,一旦子视图以纵向模式添加到根控制器,它就会正确旋转和调整大小(并保持这种方式)。如果在根控制器处于横向状态时添加子视图,则它会旋转但不会自动调整大小(并且视图大小仍然会混乱,然后旋转回到肖像)
我试图通过调用SetNeedsLayout,SetNeedsDisplay和LayoutIfNeeded强制自动调整大小但没有任何效果。我知道我可以通过确定根控制器的方向并适当调整子视图的大小来手动执行此操作,但这对于应该自动运行的事情来说是很多工作。
我错过了什么吗?任何帮助,将不胜感激。我的项目是iPhone应用程序的iPad端口,iPhone应用程序不旋转所以我不确定这可能是3.2 beta的问题。
答案 0 :(得分: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];
}
}