横向模式下的导航控制器堆栈,但模式呈现的视图控制器视图始终为纵向帧大小

我的应用程序主要使用导航控制器堆栈,有时会以模态方式显示一些控制器。 在横向模式下,导航控制器堆栈中的控制器工作正常,但是由presentViewController或之前的presentModalViewController显示的其他视图控制器始终提供纵向大小视图框(在iOS iOS 6.0上始终为768×1024) – 即使在纵向和横向之间来回旋转也是如此。

与A视图控制器相关的一种是横向模式,但我从纵向模式获取帧? 但是经过检查的答案没有帮助。 如果我将后一个视图控制器添加为导航堆栈的一部分,则在第一次加载和后续轮换时发生的resize会起作用。 如上所述,当通过presentViewController添加控制器时,问题才会出现。

将模态分支包装到另一个导航控制器并在那里定义旋转蒙版。 在iOS6中- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) shouldAutorotateToInterfaceOrientation - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)仅适用于导航堆栈分支,整个分支应以相同的方式工作。

因此,导航子类:

 @interface CLNotRotatingNavController : UINavigationController 

并在其.m中添加此项

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return NO; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; } - (BOOL) automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers { return YES; } 

并将所有模态分支包装到此导航。 这将在必要时锁定所有内容。