Проблема
При переходе с background state
orientation
приложения не сразу меняется на portrait
.Используемая мной функция ниже должна вызываться дважды с некоторой задержкой или потянуть status bar
или повернуть устройство, чтобы увидеть изменения.
Подход
Ясделать видеоплеер в моем приложении.По умолчанию приложение поддерживает только ориентацию portrait
, но при воспроизведении видео пользователь может переключаться между режимами fullscreen(landscape)
и portrait
вручную.
Code
func fullScreenButtonDidTap(_ videoPlayer: VideoPlayerController) {
let delegateOrientation: UIInterfaceOrientationMask
if ourOrientation == .portrait{
// move to landscape
ourOrientation = .landscapeRight
delegateOrientation = .landscapeRight
}else{
// move to protrait
ourOrientation = .portrait
delegateOrientation = .portrait
}
appDelegate.orientation = delegateOrientation
let value = self.ourOrientation.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
}
Где свойство delegateOrientation
используется в AppDelegate
public var orientation: UIInterfaceOrientationMask = UIInterfaceOrientationMask.portrait
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
return orientation
}
Ответ приемлем в Swift или в Obj-C