1

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

视图控制器处于横向模式有关,但我从纵向模式获取框架?但是检查的答案没有帮助。如果我将稍后的视图控制器添加为导航堆栈的一部分,则在第一次加载和后续旋转时会发生调整大小。如上所述,只有在通过 presentViewController 添加控制器时才会出现问题。

4

1 回答 1

3

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

因此,子类化导航:

@interface CLNotRotatingNavController : UINavigationController

并在其 .m 中添加此

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return NO;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}

- (BOOL) automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers {
    return YES;
}

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

于 2012-10-28T11:03:48.773 回答