【发布时间】:2012-02-01 15:46:16
【问题描述】:
我的应用从根视图控制器开始。它的工作是在应用程序准备好之前显示一个启动屏幕。初始屏幕位于单独的视图控制器 (splashVC) 中。当应用程序准备就绪时,appDelegate 会调用根视图控制器中的 present 方法。从这里开始,根视图控制器添加另一个视图控制器 (mainVC) 作为子视图控制器,然后使用
[splashVC willMoveToParentViewController:nil];
[self transitionFromViewController:splashVC
toViewController:mainVC
duration:0.5
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
[self.view addSubview:mainVC.view];
[splashVC.view removeFromSuperview];
}
completion:^(BOOL finished) {
[splashVC removeFromParentViewController];
}];
我的问题是,如果我以横向模式启动应用程序,那么我会看到 Default.png 加载,然后是我的启动屏幕,该屏幕会自动旋转到横向。这一切都说得通。但是,当mainVC 出现在屏幕上时,它的视图似乎卡在纵向上——视图并没有一直延伸到屏幕的右边框。根视图控制器可以很好地自动调整大小 - 我为其添加了背景颜色,因此我可以看到 mainVC 并没有完全覆盖它。我认为这可能是因为 mainVC 在轮换发生时不是孩子。所以我在根视图控制器的 loadView 方法中添加了mainVC,其中添加了splashVC。我只是想弄清楚为什么在显示mainVC 时,它不是自动调整大小的。如果我添加方法 -
willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
然后我可以看到旋转发生在 mainVC 加载之前,因为它从未在 mainVC 中调用。我不想修改视图的大小。关于如何处理这个问题的任何帮助都会很棒。也许我在我的容器中遗漏了一些东西,但我正在使用 addChildViewController 和 didMoveToParentViewController 方法将我的视图控制器作为子视图控制器添加到根视图控制器。
编辑 - 我注意到在 mainVC 的 initWithNibNamed... 方法中 self.interfaceOrientation 的值是纵向的,但它的 viewDidLoad 方法的值是横向的。我不确定是否有一种好方法可以解释这一点。似乎在加载笔尖时发生了旋转。
提前致谢。
【问题讨论】:
标签: iphone ios ipad uiviewcontroller uikit