Iphone iOS 8倒置方向,启用XCode选项,仍然不';行不通

Iphone iOS 8倒置方向,启用XCode选项,仍然不';行不通,iphone,xcode,ios8,orientation,Iphone,Xcode,Ios8,Orientation,我在iOS8(XCode 6.1.1)中开发了一个通用应用程序。它将支持所有4个方向(左、右、纵向和倒置) 问题是,尽管在XCode中选中了支持方向的四个选项,但只有左、右和纵向正确工作。那么,XCode或iOS8上有bug吗?Myinfo.plist显示所有支持的方向,但当我在模拟器或设备上运行应用程序时,它不会在方向颠倒时“翻转”。(注:这是一个singleview应用程序,没有任何导航控制器) 谢谢 Cleverson好吧,我已经弄明白了项目配置选项的目的。。。在选项中,你说的是“我的应用

我在iOS8(XCode 6.1.1)中开发了一个通用应用程序。它将支持所有4个方向(左、右、纵向和倒置)

问题是,尽管在XCode中选中了支持方向的四个选项,但只有左、右和纵向正确工作。那么,XCode或iOS8上有bug吗?My
info.plist
显示所有支持的方向,但当我在模拟器或设备上运行应用程序时,它不会在方向颠倒时“翻转”。(注:这是一个singleview应用程序,没有任何导航控制器)

谢谢


Cleverson

好吧,我已经弄明白了项目配置选项的目的。。。在选项中,你说的是“我的应用程序支持这些方向”,而不是“我的应用程序必须使用这四个选项”。。。所以,在iPhone上,你必须明确地说,一个特定的ViewController支持所有方向(upsidedown不支持默认方向,原因我不知道)。。。支持所有方向的代码应如下所示:

override func supportedInterfaceOrientations() -> Int{
    return Int(UIInterfaceOrientationMask.All.rawValue)
}

使用Swift 2.1,您可以将@Cleversou的答案简化为:

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask
{
  return .All
}
使用Swift 2.3

override var supportedInterfaceOrientations : UIInterfaceOrientationMask {
  return .all
}

如果在导航控制器或选项卡栏控制器内运行,则需要在子类中执行相同的重写,或使用扩展名重写所有实例:

extension UINavigationController {
  override public func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    return .All
  }
}

extension UITabBarController {
  override public func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    return .All
  }
}
编辑:从Swift 3.0/iOS 9(可能更早)开始,这将是:

extension UINavigationController {
    override open var supportedInterfaceOrientations : UIInterfaceOrientationMask     {
        return .all
    }
}

extension UITabBarController {
    override open var supportedInterfaceOrientations : UIInterfaceOrientationMask     {
        return .all
    }
}

在iOS 9 beta版(Xcode beta 4)中不起作用-即使我修复了签名以返回类型为
UIInterfaceOrientationTask
(否则它将无法编译)的值。在Xcode 9上不起作用,看起来该功能完全消失了。非常有趣,谢谢。有趣的是,似乎您只需在最高级别的视图控制器上执行此操作。你会想,你必须“一路下来”,太好了。但似乎不适用于启动屏幕。谢谢!我在我的第一个ViewController中添加了一个NavigationController,它应该只支持纵向模式,这打破了它。扩展
UINavigationController
修复了它,但之后它也应用于其他所有导航控制器!如果只想对特定NC使用自定义设置,请创建一个新的
类myNavigationController:UINavigationController{}
类,其中包含特殊代码,然后在inspector中将其设置为NC的自定义类。