我有一个iOS 6 iPad应用程序,大多数ViewControllers都有自己的导航控制器。在所有这些视图中,我希望方向只是横向,它可以正常工作。有一个View Controller虽然没有导航控制器 - 我只是在导航控制器顶部的View Controller上打开它的视图,但它不是一个模态。我确实希望用户能够在该视图控制器上更改屏幕方向,但要保持其他所有方面的风景。这就是我的工作:
导航控制器的子类:
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
-(BOOL)shouldAutorotate {
return UIInterfaceOrientationIsLandscape(self.interfaceOrientation);
}
以下是我希望同时具有横向和纵向的特定View Controller的相同方法:
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
- (BOOL)shouldAutorotate {
return YES;
}
由于此View Controller没有导航控制器,我确信这可以解决问题。但由于某种原因,我仍然无法在此View Controller中翻转屏幕。这是我展示View Controller的方式 - 也许这就是背后的原因:
UIWindow *window = [[UIApplication sharedApplication].windows objectAtIndex:0];
[[window.subviews objectAtIndex:0] addSubview:previewView];
答案 0 :(得分:0)
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
将此更改为
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
If you have more doubts
答案 1 :(得分:0)
实际上,您显示此特殊视图控制器的方式会使您的视图无法更改方向,因为当设备更改方向时,它会询问您的键窗口的rootController是否可以定向,并且在您的情况下,您将返回景观您的窗口仅支持横向模式。
所以也许你应该在没有动画的情况下从你的navigationController中呈现它。而不是在您的特殊视图控制器中实现- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
。