应用程序进入前台后,UIInterfaceOrientation不会更改

时间:2018-09-25 11:11:23

标签: ios objective-c swift

问题

来自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

中接受

0 个答案:

没有答案