У меня есть приложение, состоящее из одного контроллера панели вкладок, который содержит 4 навигационных контроллера. Я не могу найти решение, чтобы один контроллер в иерархии навигационных контроллеров находился только в ландшафтном режиме. Все остальные контроллеры предполагают быть портретом. Оцените любую помощь по этой проблеме.Один контроллер в альбомной ориентации
0
A
ответ
2
В viewDidLoad():
контроллера навигации, который вы хотите быть пейзаж, включают в себя:
let value = UIInterfaceOrientation.LandscapeLeft.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")
не забудьте добавить следующее переопределение слишком
override func shouldAutorotate() -> Bool {
return true
}
0
поэтому я попытался следующее решение и работал на меня:
В AppDelegate.swift:
var currViewController: UIViewController?
func application(application: UIApplication, supportedInterfaceOrientationForWindows window: UIWindow?) -> UIInterfaceOrientationMask {
if currViewController is MyCustomController {
return UIInterfaceOrientationMask.LandscapeLeft
} else {
return UIInterfaceOrientationMask.Portrait
}
}
В MyCustomController.swift:
let oAppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
override func viewDidLoad(){
super.viewDidLoad()
oAppDelegate.currViewController = self
}
Я добавил этот код навигации контроллера, он не работает на прошивке 8, shouldAutorotate никогда не называло. Кажется, что это большая проблема в новейшей iOS. – Oleg