2016-11-03 7 views
2

Я пытаюсь заблокировать мой viewController к только портретной ориентации без необходимости полагаться на информацию развертывания, но мой следующий код не работаетSwift 3, как заблокировать ориентацию

override var shouldAutorotate: Bool { 
    return false 
} 

override var supportedInterfaceOrientations: UIInterfaceOrientationMask { 
    return UIInterfaceOrientationMask.portrait 
} 

override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation { 
    return UIInterfaceOrientation.portrait 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

} 
+2

Почему бы вам не полагаться на эту информацию? это не лучший способ попытаться быть умнее, чем xcode –

+1

Я скопировал и вставил ваш код, и он блокирует viewController в режиме * portrait *, 'override var supportedInterfaceOrientations: UIInterfaceOrientationMask {return UIInterfaceOrientationMask.portrait}' должно быть достаточно для вашего случая , –

+0

@Carlo plz посмотреть здесь: - https://stackoverflow.com/questions/31758706/how-to-force-or-disable-interface-orientation-for-some-but-not-all-uiviewcontrol/31801804# 31801804 –

ответ

1

Убедитесь, что вы положили ваш код родителя view Controller, иначе он может не работать, например, в классе контроллера контроллера навигации.

5

Вы можете попробовать это в AppDelegate. Это заблокирует ориентацию для всех ваших наблюденийКонтроллеры

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { 
    return UIInterfaceOrientationMask(rawValue: UIInterfaceOrientationMask.portrait.rawValue) 
}