来自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
中接受