我的应用程序中有一个视图控制器。让它的第一个视图控制器,我的第一个视图控制器在手机中以纵向模式出现,当用户以横向模式旋转手机时,第一个视图控制器也以横向模式旋转。
它工作正常,现在我在第一个视图控制器上有一个按钮,当我触摸按钮时,第二个视图控制器出现。我只想做的是,即使第一个视图控制器处于横向模式,第二个视图控制器也应该始终以纵向模式出现。是否有任何方法我必须重写才能获得此功能?
在导航控制器中,控制器的方向取决于导航控制器的根控制器的方向。
你有两种可能:
根据实际显示的控制器,使您的根控制器shouldAutorotateToInterfaceOrientation:
返回不同的值;
在您的视图控制器的视图上使用转换,以便旋转它。
我会尝试第一种方法,开始。看看这篇文章,了解如何去做(只是忽略这些UITabBarController
东西),或者试试这个(它只是将消息中继到导航层次结构中的顶部控制器):
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return [self.navigationController.topController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}
为了在 iOS6 上达到同样的效果,请尝试定义以下方法:
-(NSUInteger)supportedInterfaceOrientations {
return [self.navigationController.topController supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return [self.navigationController.topController preferredInterfaceOrientationForPresentation];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
在第二个视图控制器中保留这个。