Невозможно заставить ориентацию UIViewController
У меня есть портретное приложение с одним альбомным ViewController.
Я много копался о том, как заставить ориентироваться на ландшафт, когда приложение привязано к портрету, и я попробовал множество решений, представленных здесь, и не только, но безуспешно.
До сих пор мне удавалось автоматически поворачивать VC, который мне нужен в альбомной ориентации, но поскольку ориентация не заблокирована, все другие VC также будут вращаться.
override func viewDidAppear(animated: Bool)
{
let value = UIInterfaceOrientation.LandscapeRight.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")
}
override func shouldAutorotate() -> Bool
{
return true
}
После еще нескольких копаний я закончил с этим после нахождения примера проекта, но пока он работает в этом проекте, он, похоже, не работает для меня.
Это в AppDelegate
func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask {
if self.window?.rootViewController?.presentedViewController is ConclusionReferencesVC {
let conclusionReferencesVC = self.window!.rootViewController!.presentedViewController as! ConclusionReferencesVC
if conclusionReferencesVC.isPresented
{
return UIInterfaceOrientationMask.LandscapeRight;
}
else
{
return UIInterfaceOrientationMask.Portrait;
}
}
else
{
return UIInterfaceOrientationMask.Portrait;
}
}
Это в ВК я хочу иметь в ландшафте:
var isPresented = true
@IBAction
func dismiss()
{
isPresented = false
self.presentingViewController!.dismissViewControllerAnimated(true, completion: nil);
}
По какой-то причине метод supportsInterfaceOrientationsForWindow не проверяет начальное условие.
Я также попробовал это среди других, но не повезло:
Как заблокировать ориентацию одного контроллера вида в портретном режиме только в Swift
supportInterfaceOrientationsForWindow в Swift 2.0
Есть идеи? Кажется, я что-то упустил, но не могу понять, что.