У меня есть пользовательская настройка в моем приложении, которая должна устанавливать ориентацию определенных контроллеров представления как в альбомной, так и в портретной ориентации. Пользователь нажимает кнопку на главном экране, чтобы переключать пейзаж/портрет для других контроллеров представления в приложении, установив глобальную переменную, которая должна считываться другими контроллерами.Ограничение ориентации на UIViewController для определенных контроллеров представления в Swift
я продлил UINavigationController следующим образом:
extension UINavigationController {
public override func supportedInterfaceOrientations() -> Int {
return visibleViewController.supportedInterfaceOrientations()
}
}
Я также попытался изменить visibleViewController к topViewController не повезло.
Во всех моих UIViewController файлов, которые я затем переопределить функцию:
override func supportedInterfaceOrientations() -> Int {
return appOrientation // global user setting
}
Проблема заключается в том, что единственный контроллер представления, что когда-либо получает эту функцию с именем является основным контроллером вид (первый вид пользователь видит и где пользователь может выбрать ориентацию). Почему эта функция не вызвана в контроллерах с последующим нажатием?
Глобальная переменная appOrientation устанавливается в одно из следующих действий, когда пользователь переключает его:
let orientationPortrait = Int(UIInterfaceOrientationMask.Portrait.rawValue | UIInterfaceOrientationMask.PortraitUpsideDown.rawValue)
let orientationLandscape = Int(UIInterfaceOrientationMask.Landscape.rawValue)
Если я вернуть один из этих определяет в функции supportedInterfaceOrientation главного контроллера представления, весь приложение ориентировано на определите (не то, что я хочу).
Должно быть, что-то здесь отсутствует.
Вы ничего не пропустили. То, что вы пытаетесь сделать, просто не поддерживается, и не было такого, как iOS 5. – matt
@matt Это немного разочаровывает. Знаете ли вы какие-либо возможные обходные пути, которые могут сделать что-то похожее на то, что я хочу? Благодаря! –
Используйте представленный контроллер представления. Вы всегда можете контролировать ориентацию представленного контроллера представления. – matt