ご存知のように、MPmoviePlayerController でムービーを再生すると、moviePlayer は、moviePlayer のビューの中央に activityIndicatorView を表示する必要があります。プログラムにカスタム activityIndicatorView を追加しました。MPMoviePlayController の activityIndicatorView を非表示または削除したいのですが、できますか?
1 に答える
はい、できます!
あなたがやりたいことは、ムービーの再生中ではなく、ムービーのロード中にアクティビティ インジケーターを表示することだと思いますか? そう思い込んで進み続ける…
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];
およびハンドラー内 ( playBackStateChanged
and 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 のビューの上に activityIndicatorView を追加するだけです。
サムを
応援するお手伝いができれば幸いです