2

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

4

1 に答える 1

7

はい、できます!

あなたがやりたいことは、ムービーの再生中ではなく、ムービーのロード中にアクティビティ インジケーターを表示することだと思いますか? そう思い込んで進み続ける…

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

とにかく、UIActivityindicator ビューを表示および非表示にするには、load- または playstatus が変更されたときに 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];

およびハンドラー内 ( playBackStateChangedand 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 を追加するだけです。

サムを
応援するお手伝いができれば幸いです

于 2010-07-09T12:11:51.923 に答える