#ios #swift
#iOS #swift
Вопрос:
Я хочу исправить ориентацию определенных контроллеров.
Я пробовал больше раз, но не смог исправить. Я исправил ориентацию контроллера в методе appdelegate (supportedInterfaceOrientationsFor), но причина ориентации предупреждающего сообщения не работает должным образом, а затем работает нормально. Я имею в виду, что это работает для всех типов ориентации.
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
if !UIDevice.isIphone() {
let controller = (application.keyWindow?.rootViewController as? UINavigationController)?.visibleViewController
if controller is LiveStreamViewController || controller is VideoStreamingViewController {
return .portrait
} else {
return .all
}
} else {
return .portrait
}
}
Комментарии:
1. Неясно, какова цель и что происходит вместо этого.
Ответ №1:
Ориентация «конкретного контроллера» не определяется реализацией application(_:supportedInterfaceOrientationsFor:)
. Это определяется изнутри конкретного контроллера путем реализации supportedInterfaceOrientations
. И даже тогда это значение не учитывается, если ваш контроллер просмотра не является самым верхним.
Ответ №2:
Предупреждающий вид угрюмо прогнил в соответствии с Orientation
, но если не работает, то попробуйте использовать приведенный ниже код
func didPresent(_ alertView: UIAlertView) {
// UIAlertView in landscape mode for specific controller?
UIView.beginAnimations("", context: nil)
UIView.setAnimationDuration(0.1)
alertView.transform = alertView.transform.rotated(by: 3.14159 / 2)
UIView.commitAnimations()
}