在 Universal Xcode 6 项目中仅停止 iPhone 屏幕旋转

Posted

技术标签:

【中文标题】在 Universal Xcode 6 项目中仅停止 iPhone 屏幕旋转【英文标题】:Stop only iPhone screen rotating in Universal Xcode 6 project 【发布时间】:2014-10-20 03:21:47 【问题描述】:

随着 Xcode 6 的推出,Apple 取消了在 Universal 应用程序中轻松为 iPad 和 iPhone 提供多个故事板的功能。因此,您无法在旋转面板/设置上区分 iPad 和 iPhone。

我怎样才能阻止 iPhone 应用旋转成横向,同时仍然允许 iPad 应用这样做。

这是你只能在代码中做的事情吗?如果是,我仍在使用 Objective C,而不是 Swift。

【问题讨论】:

【参考方案1】:

删除所有其他答案的代码。转到您的 info.plist 文件并添加以下内容。

“支持的接口方向” - 数组 “纵向(底部主页按钮)” - 字符串 “纵向(顶部主页按钮)” - 字符串 “支持的界面方向 (iPad)”- 数组 “纵向(底部主页按钮)” - 字符串 “纵向(顶部主页按钮)” - 字符串 “横向(左主页按钮)” - 字符串 “横向(右主页按钮)” - 字符串

【讨论】:

原始键 - UISupportedInterfaceOrientations~ipad【参考方案2】:

查看THIS的答案。

基本上你必须在 UINavigationControllerUITabBarController 子类上实现 Chris1994 的答案>,然后将以下内容添加到您在该导航或选项卡控制器上拥有的第一个 UIVIewController 子类

- (NSUInteger)supportedInterfaceOrientations

    return UIInterfaceOrientationMaskPortrait;

【讨论】:

【参考方案3】:
    - (NSUInteger) supportedInterfaceOrientations
    
        NSString *device = [UIDevice currentDevice].model;

        if([device isEqualToString:@"iPhone"])
        
            return UIInterfaceOrientationMaskPortrait;
        
        else
        
        return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscape;
        
    

- (BOOL)shouldAutorotate

if([device isEqualToString:@"iPhone"])
  
     return NO;
  
  else
  
      return YES;
  

【讨论】:

由于接收器未知 - '设备',构建失败。我已将它放在 ViewController.m 文件中。这是正确的吗? @WillWoodruff 是的,但是很抱歉复制 NSString *device = [UIDevice currentDevice].model;进入布尔应该旋转 虽然提供的代码不再产生任何错误,但它仍然无法停止旋转,有什么想法吗?

以上是关于在 Universal Xcode 6 项目中仅停止 iPhone 屏幕旋转的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 中仅更改应用程序名称? [复制]

将 Angular 2/3/4/5/6 项目转换为 Angular Universal

如何在 Xcode 5 中手动将仅限 iPhone 的应用程序转换为 Universal?

Xcode 6 中的 Shell 脚本调用错误

Xcode 在 UiCollectionView 中仅重新加载一个单元格

使用 Autolayout Xcode6 在 Universal Storyboard 中相对于 UIImage 定位 UILabel