ipad ios 5.1 中的界面方向问题

Posted

技术标签:

【中文标题】ipad ios 5.1 中的界面方向问题【英文标题】:Interface orientation issue in ipad ios 5.1 【发布时间】:2012-11-20 10:36:52 【问题描述】:

我为 iPhone 和 iPad 创建了一个通用应用程序。在这个应用程序中,iPhone 是navigation 类型,iPad 是tab bar 类型。 iPhone 支持横向和纵向,iPad 应用程序仅支持横向。

在 iPad 中,我在登录窗口(当前模型视图)之后显示TabBarController,当我第一次运行 iPad 应用程序时,它总是以纵向模式运行。即使我将方向模式设置为横向,也应该自动旋转横向。

所以请任何人建议我哪里错了,或者我如何在横向模式下强制显示视图。

【问题讨论】:

【参考方案1】:

我使用下面的代码强行改变了方向。它对我来说很好用:

if ([[UIDevice currentDevice] respondsToSelector:@selector (setOrientation:)]) 
  SEL selector = NSSelectorFromString (@" setOrientation:");
  NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];
  [invocation setSelector:selector];
  [invocation setTarget:[UIDevice currentDevice]];
  int Val = UIInterfaceOrientationLandscapeRight;
  [invocation setArgument:& val atIndex:2];
  [invocation invoke];
 

谢谢

【讨论】:

这符合审查指南安全吗?这是私有 API 不过,它还是一个私有 API,总有一天它可能会消失。最好将适当的CGAffineTransform 应用于视图和子视图并更改状态栏方向。【参考方案2】:

只需在您的 applicationdelegate.m 文件中添加以下代码

self.window.rootViewController = self.navController;

and also remove [self.window addSubview:self.navController.view];

this will definitely working.. 

【讨论】:

已经在这样做了。在 ipad 的情况下:self.window.rootViewController = self.tabBarController;和 iphone self.window.rootViewController = self.navigationController; 应用是通用的。 iphone中的navigationcontroller和ipad中的tabbarcontroller。在 ipad 中完成上述操作后,它的非方向问题没有得到解决。

以上是关于ipad ios 5.1 中的界面方向问题的主要内容,如果未能解决你的问题,请参考以下文章

在 iPad iOS 4.3 中支持纵向和横向界面方向的最佳实践

iPad ios6中的方向问题

Storyboard iOS 5.1 时横向方向不起作用

iPad 界面方向

iOS Swift 在 iPad 上随方向改变图像

iOS (iPhone/iPad) SDK - 应用程序不改变方向