如您所知,当我使用MPmoviePlayerController播放电影时,moviePlayer应该在moviePlayer视图的中心显示一个activityIndicatorView。现在,我已经在我的程序中放置了一个自定义的activityIndicatorView,我只想隐藏或删除MPMoviePlayController的activityIndicatorView,我可以这样做吗?
答案 0 :(得分:7)
我想你想要做的是在你的电影加载时显示活动idicator,而不是在播放时?我只是假设并继续......
在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的视图中添加您的activityIndicatorView。
希望我能帮助你 欢呼声 SAM