如您所知,当我使用 MPmoviePlayerController 播放电影时,moviePlayer 应该在moviePlayer'view 的中心显示一个activityIndicatorView。现在,我在我的程序中放了一个自定义的activityIndicatorView,我只想隐藏或删除MPMoviePlayController的activityIndicatorView,我可以这样做吗?
1 回答
我们可以!
我猜你想要做的是在加载电影时显示活动指示符,而不是在播放时?我只是假设并继续...
在 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(如果您这样做,您不必关心隐藏和取消隐藏控件。
其余的很简单,只需将您的 activityIndicatorView 添加到 MPMovieViewController 的视图之上。
希望我能帮上忙
,
山姆