質問

ご存知のとおり、 MPmoviePlayerController でムービーを再生すると、moviePlayer のビューの中央に activityIndi​​catorView が表示されます。さて、プログラムにカスタム activityIndi​​catorView を追加しました。MPMoviePlayController の activityIndi​​catorView を非表示または削除したいだけですが、それはできますか?

役に立ちましたか?

解決

はい、できます!

あなたがやりたいのは、ムービーの再生中ではなく、ムービーのロード中にアクティビティインジケーターを表示することだと思いますか?私はそれを想定してそのまま進みます...

SDK 3.2 以降では、MPMoviePlayerController (および MPMoviePlayerViewController) 全体が以前のバージョンよりもはるかに優れています。まだ MPMoviePlayerController を使用している場合は、MPMoviePlayerViewController (基本的に MPMoviePlayerController オブジェクトをカプセル化する UIView サブクラス) に切り替えることを検討してください。

とにかく、UIActivityindicator ビューを表示または非表示にするには、ロードまたはプレイステータスの変更時に MPMoviePlayerController から送信される通知に接続することをお勧めします。

そのうちのいくつかは次のとおりです。

MPMoviePlayerPlaybackStateDidChangeNotification
MPMoviePlayerLoadStateDidChangeNotification 

したがって、次のようにしてこれらのイベントに接続します。

[[NSNotificationCenter defaultCenter] addObserver: self 
                                             selector: @selector(loadStateChanged:) 
                                                 name: MPMoviePlayerLoadStateDidChangeNotification 
                                               object: moviePlayerViewController.moviePlayer];

この

[[NSNotificationCenter defaultCenter] addObserver: self 
                                             selector: @selector(playBackStateChanged:) 
                                                 name: MPMoviePlayerPlaybackStateDidChangeNotification 
                                               object: moviePlayerViewController.moviePlayer];

ハンドラー内では (playBackStateChanged そして loadStateChanged)

次のようなことができます:

-(void)playBackStateChanged:(id)sender
{
    MPMoviePlaybackState playbackState = [moviePlayerViewController.moviePlayer playbackState];

    switch (playbackState) {

        case MPMoviePlaybackStateStopped :


            break;

        case MPMoviePlaybackStatePlaying :
            [yourActivityIndicatorView stopAnimating];
            break;

        case MPMoviePlaybackStateInterrupted :
            [yourActivityIndicatorView startAnimating];
            break;
    }
}

IndicatorView の "hidesWhenStopped" (または同様の) プロパティが Yes に設定されていることを確認してください (そうすれば、コントロールの非表示と再表示を気にする必要がなくなります)。

残りは簡単で、MPMovieViewController のビューの上に activityIndi​​catorView を追加するだけです。

私が手助けできれば幸いです
乾杯
サム

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