IOS 8 направлена вверх, опция XCode включена, по-прежнему не работает
У меня есть универсальное приложение, разрабатываемое в iOS8 (XCode 6.1.1). Он будет поддерживать все 4 ориентации (слева, справа, портрет и вверх ногами).
Проблема заключается в том, что, хотя в XCode проверяются четыре варианта поддерживаемых ориентаций, работают только левый, правый и портрет. Итак, есть ли ошибка на XCode или iOS8? Мой info.plist
показывает все поддерживаемые ориентации, но когда я запускаю приложение на симуляторе или на устройстве, он не переворачивает ориентацию, если он перевернут. (PS: это однозадачное приложение, в нем нет навигационного контроллера).
Спасибо!
Cleverson
Ответы
Ответ 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
}
}