Подтвердить что ты не робот

IOS 8 направлена ​​вверх, опция XCode включена, по-прежнему не работает

У меня есть универсальное приложение, разрабатываемое в iOS8 (XCode 6.1.1). Он будет поддерживать все 4 ориентации (слева, справа, портрет и вверх ногами).

Проблема заключается в том, что, хотя в XCode проверяются четыре варианта поддерживаемых ориентаций, работают только левый, правый и портрет. Итак, есть ли ошибка на XCode или iOS8? Мой info.plist показывает все поддерживаемые ориентации, но когда я запускаю приложение на симуляторе или на устройстве, он не переворачивает ориентацию, если он перевернут. (PS: это однозадачное приложение, в нем нет навигационного контроллера).

Спасибо!

Cleverson

4b9b3361

Ответ 1

Ну, я выяснил назначение параметров конфигурации проекта... В рамках параметров вы говорите: "Мое приложение поддерживает эти ориентации", а не "мое приложение должно использовать эти четыре варианта"... Итак, на iPhone вы должны объяснить, что конкретный ViewController поддерживает все ориентации (upsidedown не делает parte ориентации по умолчанию, по той причине, что я не знаю)... Код должен быть таким, чтобы поддерживать все ориентации:

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

Ответ 2

С Swift 2.1 вы можете упростить @Cleversous ответ на:

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

С Swift 2.3

override var supportedInterfaceOrientations : UIInterfaceOrientationMask {
  return .all
}

Ответ 3

Если вы работаете внутри контроллера навигации или контроллера панели вкладок, вам нужно будет сделать то же самое переопределение в вашем подклассе или переопределить все экземпляры с расширением:

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
    }
}