我的应用程序主要使用导航控制器堆栈,有时会以模态方式显示某些控制器。在横向模式下,导航控制器堆栈中的控制器工作正常,但presentViewController或之前的presentModalViewController显示的其他视图控制器始终提供纵向大小视图框(在iOS iOS 6.0上始终为768x1024) - 即使在纵向和横向之间来回旋转。 / p>
与A view controller is in landscape mode, but I'm getting the frame from portrait mode?有关但是经过检查的答案没有帮助。如果我将后一个视图控制器添加为导航堆栈的一部分,则首次加载和后续轮换时发生的调整大小会起作用。如上所述,当通过presentViewController添加控制器时,问题才会出现。
答案 0 :(得分:3)
将模态分支包装到另一个导航控制器并在那里定义旋转蒙版。
在iOS6中,- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)
仅适用于导航堆栈分支,整个分支应该以相同的方式工作。
所以,继承nav:
@interface CLNotRotatingNavController : UINavigationController
并在其.m中添加此
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return NO;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
- (BOOL) automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers {
return YES;
}
并将所有模态分支包装到此nav。这将在必要时锁定所有内容。