gpt4 book ai didi

ios - 仅允许系统 AVPlayerViewController 的全屏横向

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:27:08 28 4
gpt4 key购买 nike

我有一个应用程序,它使用 UISplitViewController 在具有 WKWebView 属性的详细 View Controller 中加载网页。有些 URL 是指向嵌入式 YouTube 视频的链接,有些是指向 .mp4 文件的直接链接。无论哪种方式,视频文件都会自动加载(在点击 YouTube 视频后)到全屏系统播放器中,我假设它是一个 AVPlayerViewController。我看过几篇关于子类化 AVPlayerViewController 以允许通过实现 supportedInterfaceOrientations 进行旋转的帖子,以及其他建议检查 UIWindow 类的帖子的 rootViewController presentedViewController in application: supportedInterfaceOrientationsForWindow: 或检查 AppDelegate 上的变量,该变量在 时设置code>AVPlayerViewController 被呈现,但这些解决方案都没有为我工作,因为我没有创建或呈现我自己的 AVPlayerViewController 实例,所以我不确定如何允许播放这些视频时旋转为横向。

有什么方法可以判断系统何时以全屏模式播放视频,以便允许旋转?

以下是我已经看过的一些帖子的链接:

MPMoviePlayerViewController | Allow landscape mode

Only ONE VIEW landscape mode

最佳答案

我希望你仍然需要一个答案。我在 Swift 中找到了解决方案,但它在 Objective C 中可以简单地转换。我发现,当使用 WKWebView(也可能是 UIWebView)时,全屏视频显示在新的 UIWindow 中(至少在 iOS 10 上)。该窗口有空白的 UIViewController 并在其上呈现 AVFullScreenViewController

因此,在您的 AppDelegate 中,您应该像这样实现 application:supportedInterfaceOrientationsForWindow:

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
if window != self.window, let pvc = window?.rootViewController?.presentedViewController, "\(type(of: pvc))" == "AVFullScreenViewController" {
return pvc.isBeingDismissed ? .portrait : .all
}
return .portrait
}

虽然 AVFullScreenViewController 是私有(private) API 类,但您可以保护自己并将 "AVFullScreenViewController" 替换为 String(format: "AV%@ViewController", "FullScreen ")

祝你好运!

关于ios - 仅允许系统 AVPlayerViewController 的全屏横向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40555385/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com