iPad 上的 UIViewController 处理方向 iOS 6.0

Posted

技术标签:

【中文标题】iPad 上的 UIViewController 处理方向 iOS 6.0【英文标题】:UIViewController handle orientation iOS 6.0 on iPad 【发布时间】:2012-10-06 14:01:24 【问题描述】:

在我的应用程序中,我需要为 ViewControllers 处理不同的方向。

    ViewController1 必须只支持横向。 ViewController2 必须支持横向+纵向。

我在 Summury 项目中启用了所有方向,如下所示:

所以,我将这段代码插入ViewController1

- (BOOL)shouldAutorotate

    return YES;


- (NSUInteger)supportedInterfaceOrientations

    return UIInterfaceOrientationMaskLandscape;

我将这段代码插入ViewController2

- (BOOL)shouldAutorotate

    return YES;


- (NSUInteger)supportedInterfaceOrientations

    return UIInterfaceOrientationMaskAll;

问题是ViewController1 也可以纵向旋转(它应该只支持横向)。

有什么想法吗?

非常感谢大家!

【问题讨论】:

This link may help you 我已经阅读了这个讨论,但对我没有帮助 这有点棘手。这可能会对您有所帮助:***.com/q/12755727/653513 问题解决了吗?我在 ios6 上也有类似的旋转问题 【参考方案1】:

你的 viewController 是你的 rootViewController 吗? 如果没有,那可能是你的问题。

如果您的 rootViewController 是 UINavigationController,您应该知道它不会将这些消息转发到它的 topViewController。因此,如果这是您的情况,我建议您使用 UINavigationController 的子类,在其中覆盖这些新方法以转发到 topViewController。

【讨论】:

【参考方案2】:

在 iOS 6 之前,这可以正常工作

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientatio n  if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) return YES;

else return NO; 

但在 iOS 6 中已弃用

现在您应该指定想要的方向并选择演示方向

你应该写

- (NSUInteger)supportedInterfaceOrientations  return UIInterfaceOrientationMaskLandscape; 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation  return UIInterfaceOrientationLandscapeRight; 

希望对你有帮助

祝你好运

【讨论】:

以上是关于iPad 上的 UIViewController 处理方向 iOS 6.0的主要内容,如果未能解决你的问题,请参考以下文章

加载特定于设备的 iPad/iPhone UIViewController nib 失败,带有 .mm 文件

iPad 的 UIPageViewController 上的脏动画

iPad 上的导航控制器

iPad Mini 上的 iOS 内存管理

iPad 上的 UITableView 总是灰色的,没有分隔符

iPad 应用程序,如何在 uiviewcontroller 之上显示 uiviewcontroller