离开AVFullScreenViewController后,屏幕不会旋转回纵向

时间:2017-10-16 08:01:25

标签: ios swift avkit

使用此代码可让媒体播放器在全屏模式下以横向旋转(应用程序不支持):

// 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 ,屏幕在离开全屏后不会旋转回来,因此不会调整用户界面的大小(旋转后的应用只会占用一半)屏幕)。 似乎avkit上有一些修改,但我找不到任何资源,想法?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

今天我遇到了同样的问题。解决方案是检查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
   }
}