我有一个 UIViewcontroller 托管了很多 Viewcontrollers。我在它及其子视图上设置了自动旋转,一旦应用程序加载它就可以正常工作。我遇到的问题是,在初始加载过程中,应用程序必须在本地连接并下载一些文件。在此加载过程中,如果用户旋转 iPad,UIViewController 将无法正确旋转!我确实设置了标志并应该自动旋转,但仍然无法正常工作。
PS:我允许这四个方向:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait ||
interfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown ||
interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
加载完成后,行为正确并正确旋转。现在我认为这可能是因为其中一些内部 VC 正在加载一些数据,让我解释一下:大视图控制器托管所有其他 VC(我们称他为 BigDaddy),在 bigdaddy 的 Viewdidload 中我有(为了论证)另外三个视图控制器:Busta、Skeezix 和劳伦斯。所以我这样做:
[[Busta alloc] initWithNibName:@"Busta" bundle:nil];
这反过来又调用了-viewDidLoad
Busta,所以我通过执行以下操作使该异步的文件加载部分:
dispatch_async(dispatch_get_main_queue(), ^{
});
这些更改确实有点帮助,因为在异步调度之前加载过程需要 5 秒(在这几秒内,iPad 中的任何倾斜都会导致旋转事件并且我的整个视图都消失了。现在我得到了那些 5秒减少到 1.2 秒。我的问题是,我的问题有解决方案吗?它永远不会工作吗?是否可以让应用程序在四个方向上旋转并在加载数据时响应旋转变化?