模态视图阻止其他视图旋转
我在我的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];
更新不会生效。
当然,当视图控制器以模态方式呈现时,其他视图控制器根本不会收到任何消息。 这就是这种情况下的模态。
显而易见的解决scheme是检查无模式视图控制器的viewWillAppear方法中的方向。
你必须检查执行:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Overriden to allow any orientation. return YES; }
在这两个视图。
您需要在viewWillAppear中将布局调整为当前的界面方向。 显然,由于视图是不可见的,所以当模态视图控制器启动时,animation函数将不会被调用。