Сброс автоповорота в Xcode после принудительной альбомной ориентации в одном контроллере вида (swift 4)
Приложение, в котором я начал работать, поддерживает все ориентации устройства, кроме одного из видов, который является альбомным.
Чтобы форсировать эту ориентацию, я устанавливаю значение ориентации lanscape через AppDelegate:
AppDelegate.swift
var shouldSupportAllOrientation = true
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
if (shouldSupportAllOrientation == true){
return UIInterfaceOrientationMask.all
}
return UIInterfaceOrientationMask.landscape
}
ViewController.swift
let appdelegate = UIApplication.shared.delegate as! AppDelegate
appdelegate.shouldSupportAllOrientation = false
let value = UIInterfaceOrientation.landscapeRight.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
Но когда приложение перемещается к другому контроллеру представления, а устройство находится в портретной (физической) ориентации, представления отображаются в альбомной ориентации, пока устройство не будет повернуто.
Есть ли способ определить "реальную ориентацию устройства"?
Спасибо
0 ответов
Я столкнулся с аналогичной проблемой. После принужденияUIDevice.current.orientation
, кажется, что устройство больше не может обновлять его (что выглядит ожидаемо, поскольку это свойство только для получения и представляет физическую ориентацию)
Попробуйте переопределить supportedInterfaceOrientations в ViewController.swift:
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .landscape
}
После этого, если вы откроете этот ВК, interfaceOrientation
это пейзаж, но UIDevice.current.orientation
настоящий. Просто примечание: вы можете изменить ширину и высоту вашего представления, если вы работаете с фреймами и границами.