MoviePlayerのPlayControllerbarがいつ却下されるかを知る方法は?
-
01-10-2019 - |
質問
タイトルとして、MoviePlayerを使用してMovieを演奏するとき、PlayControllerbarがいつ却下されるかを知りたいと思います。誰かがそれを知っていますか?教えてください、ありがとう。
解決
私があなたを正しく理解しているかどうかは100%確信していません。私はあなたがやりたいことは次のとおりです。
- 映画を演奏します
- (実行中の)映画の上にカスタムビュー(オーバーレイ)を追加します。
私がちょうど書き留めたものを仮定すると、私はあなたが次のことを考慮しなければならないと思います:
上にカスタムオーバーレイを追加します
MPMoviePlayerViewController
(私に関する限り)標準のプレーヤーコントロールがなしに設定されている場合にのみ許可/可能です:[moviePlayerViewController.moviePlayer setControlStyle:MPMovieControlStyleNone];
プレーヤーの上にカスタムオーバーレイを追加することは基本的に同じです
addSubview
他のビューと同様に手順[moviePlayerViewController.view addSubview:overlay];
上記のコード /コンセプトは3.2以降で動作します。私が今読んでいるので、あなたは明らかに3.0で開発しています
私の答えの最初の部分を削除するのではなく、3.0で同じ効果を達成する方法を説明します
3.0では、少し難しいです(今までに知っているように)。 mpmovieplayercontrollerはビューコントローラーではなく、フルスクリーンモードでのみ動作します。 映画が再生され始めると、KeyWindowが変わります!したがって、以下を実装することにより、それを利用します。
1)mpmovieplayercontrollerをカプセル化するクラス内で、 UIWindowDidBecomeKeyNotification
次のことを行うことによって:
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(keyWindowChanged:)
name: UIWindowDidBecomeKeyNotification
object: nil];
2)あなたを使って keyWindowChanged:
メソッドオーバーレイを追加できます。次のスニップレットは、まさに実装方法です。
- (void)keyWindowChanged: (id) sender {
//NSLog(@"keyWindowChanged");
[[NSNotificationCenter defaultCenter] removeObserver: self name: UIWindowDidBecomeKeyNotification object: nil];
UIWindow *moviePlayerWindow = [[UIApplication sharedApplication] keyWindow];
[moviePlayerWindow addSubview: overlayController.view];
[overlayController performSelector:@selector(fadeIn)];
}
繰り返しになりますが、これは機能します MovieControllMode
それを行うことによって「隠されている」ことです:
[newMPController setMovieControlMode: MPMovieControlModeHidden];
私は助けてくれることを願っています。