Я занимаюсь разработкой приложения для IOS только с одним контроллером представления и фиксированной ориентацией (портрет).Однако, если пользователь хочет прочитать руководство, устройство автоматически переходит в ландшафтный режим.Моя реализация обычно работает, но я обнаружил там ошибку: если я перехожу в альбомный режим (с пунктом меню руководства пользователя) и возвращаю устройство обратно в портретный режим, а затем я возвращаюсь в меню, в пользовательском интерфейсе есть некоторые проблемы:
В appDelegate.swift
я поставил этот код:
var deviceOrientation = UIInterfaceOrientationMask.portrait
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
return deviceOrientation
}
А в ViewController.swift
я использую эти методы для переключения между режимами ориентации:
func landscapeMode() {
appDelegate.deviceOrientation = .landscapeLeft
let value = UIInterfaceOrientation.landscapeLeft.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
}
func portraitMode() {
appDelegate.deviceOrientation = .portrait
let value = UIInterfaceOrientation.portrait.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
}
Я ожидаю изменения ориентации независимо от текущей ориентации устройства, однако в настоящее время нет должного функционирования в тех случаях, когда устройство ориентировано до действия ориентации (программного обеспечения).