我的MainViewController中有这个方法:
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
NSLog(@"MAIN CONTAINER WILL ANIMATE");
[super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}
当我旋转时,NSLog显示出来,一切都很完美。但是,如果我从我的MainViewController呈现一个modalViewController,然后我旋转,NSLog不再出现,我的MainViewController永远不会知道设备被旋转,所以当modalView被解除时,界面不会调整旋转。
关于为什么模态视图可以阻止父级接收轮换更新的任何想法?这是典型的,还是我的设置一定有问题?
为了确保,我尝试通过[mainViewController.view addSubview:modalView.view]
将modalViewController呈现为子视图,并且旋转更新正常生效。只有当我[mainViewController presentModalViewController:modalViewController];
时,更新才会生效。
答案 0 :(得分:4)
当视图控制器以模态方式呈现时,其他视图控制器根本不会收到任何消息。这就是模式在这种情况下的意思。
显而易见的解决方案是检查无模式视图控制器的viewWillAppear方法中的方向。
答案 1 :(得分:1)
您必须检查以下内容的执行情况:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Overriden to allow any orientation.
return YES;
}
在两个视图中。
答案 2 :(得分:0)
您需要在viewWillAppear中将布局调整为当前界面方向。显然,因为视图不可见,所以在模态视图控制器启动时不会调用动画函数。