0

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

// 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 进行了一些修改,但我找不到这方面的任何资源,想法?

4

2 回答 2

1

我今天遇到了同样的问题。解决方法是检查iOS11是否正在运行。如果是这样,只需 return UIInterfaceOrientationMask.portraitelse 返回所需的值。在 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
   }
}
于 2017-12-08T13:19:23.060 回答
0

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

于 2017-10-16T14:21:34.340 回答