2016-11-11 11 views
2

UISplitViewControllerを使用して、詳細ビューコントローラでWKWebViewプロパティを持つWebページを読み込むアプリケーションがあります。一部のURLは埋め込みYouTube動画へのリンクで、一部は.mp4ファイルへの直接リンクです。いずれにしても、ビデオファイルはフルスクリーンのシステムプレーヤーに自動的にロードされます(私はAVPlayerViewControllerと仮定しています)。私が推奨supportedInterfaceOrientationsを実装することで回転を可能にするAVPlayerViewControllerをサブクラス化について、いくつかの記事、および他の記事を見てきたいずれかUIWindowさんrootViewControllerpresentedViewControllerapplication: supportedInterfaceOrientationsForWindow:または設定されたAppDelegate上の変数をチェックAVPlayerViewControllerが提示されたときのクラスをチェックします私がAVPlayerViewControllerという自分のインスタンスを作成したりプレゼンテーションしたりしていないので、これらのソリューションのどれも私のために働いていないので、これらのビデオが再生されているときにどのように回転をランドスケープできるようにするかわかりません。システムAVPlayerViewControllerのフルスクリーンランドスケープを許可する

システムがフルスクリーンモードでビデオを再生しているときにわかる方法があるので、回転を許可できますか?

MPMoviePlayerViewController | Allow landscape mode

Only ONE VIEW landscape mode

答えて

1

私はuはまだ答えを必要と願っています:

は、ここで私はすでに見てきた記事の一部へのリンクです。私はSwiftのソリューションを見つけましたが、Objective Cのコンバーチブルです.WKWebView(多分UIWebViewも)を使用すると、新しいUIWindow(少なくともiOS 10)でフルスクリーンビデオが表示されることがわかりました。そのウィンドウには空白があります。UIViewControllerそして、AVFullScreenViewControllerが表示されています。

AVFullScreenViewController uはurselfを保護し、String(format: "AV%@ViewController", "FullScreen")

幸運で"AVFullScreenViewController"を置き換えることができ、プライベートAPIクラスですが!だから、ウルAppDelegateにuが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 
} 

を実装する必要があります

関連する問題