【问题标题】:Screen not rotating back to portrait after leaving AVFullScreenViewController离开 AVFullScreenViewController 后屏幕未旋转回纵向
【发布时间】:2017-10-16 08:01:24
【问题描述】:

使用此代码允许媒体播放器在全屏时横向旋转(应用程序不支持):

// handle orientation for the device
func application (_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    guard let vc = (window?.rootViewController?.presentedViewController) else {
        return .portrait
    }
    if (vc.isKind(of: NSClassFromString("AVFullScreenViewController")!)) || (vc.isKind(of: NSClassFromString("YTPlayerView")!)) {
        return .allButUpsideDown
    } else {
        return .portrait
    }
}

ios 10 中工作正常,但由于 ios 11 离开全屏后屏幕不会向后旋转,因此不会调整 UI 大小(旋转后应用程序将只占一半屏幕)。 似乎对 avkit 进行了一些修改,但我找不到这方面的任何资源,想法?

【问题讨论】:

    标签: ios swift avkit


    【解决方案1】:

    我今天遇到了同样的问题。解决方法是检查iOS11是否正在运行。如果是这样,只需返回 UIInterfaceOrientationMask.portrait 否则返回所需的值。在 iOS 11 中,即使在项目设置中仅启用了肖像,视频也可以旋转。

    例子:

    if #available(iOS 11, *) {
       return UIInterfaceOrientationMask.portrait
    } else {
       guard let vc = (window?.rootViewController?.presentedViewController) else {
          return .portrait
       }
    
       if (vc.isKind(of: NSClassFromString("AVFullScreenViewController")!)) || (vc.isKind(of: NSClassFromString("YTPlayerView")!)) {
          return .allButUpsideDown
       } else {
          return .portrait
       }
    }
    

    【讨论】:

    • 在我的情况下,在 iOS11 中,如果我全屏播放视频,将屏幕旋转到横向并退出视频,原始 ViewController 将处于横向(应用程序仅为纵向)。我尝试了几件事,但这种方法是最简单的,并且可以按预期工作。
    • 那是因为您没有将 .portrait 作为原始 VC 作为预期的伴侣返回。
    【解决方案2】:

    IOS 11 似乎开箱即用地支持这一点,这意味着如果用户运行 ios 11,则必须删除代码,离开全屏会自动将视频放在应有的位置,父屏幕不会随视频。

    【讨论】:

      猜你喜欢
      • 2013-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多