質問

タイトルとして、MoviePlayerを使用してMovieを演奏するとき、PlayControllerbarがいつ却下されるかを知りたいと思います。誰かがそれを知っていますか?教えてください、ありがとう。

役に立ちましたか?

解決

私があなたを正しく理解しているかどうかは100%確信していません。私はあなたがやりたいことは次のとおりです。

  1. 映画を演奏します
  2. (実行中の)映画の上にカスタムビュー(オーバーレイ)を追加します。

私がちょうど書き留めたものを仮定すると、私はあなたが次のことを考慮しなければならないと思います:

  1. 上にカスタムオーバーレイを追加します MPMoviePlayerViewController (私に関する限り)標準のプレーヤーコントロールがなしに設定されている場合にのみ許可/可能です:

    [moviePlayerViewController.moviePlayer setControlStyle:MPMovieControlStyleNone];
    
  2. プレーヤーの上にカスタムオーバーレイを追加することは基本的に同じです 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];

私は助けてくれることを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top