隐藏电影PlayerController中的活动指示器

时间:2010-07-09 08:08:01

标签: iphone iphone-sdk-3.2 uiactivityindicatorview mpmovieplayer

如您所知,当我使用MPmoviePlayerController播放电影时,moviePlayer应该在moviePlayer视图的中心显示一个activityIndi​​catorView。现在,我已经在我的程序中放置了一个自定义的activityIndi​​catorView,我只想隐藏或删除MPMoviePlayController的activityIndi​​catorView,我可以这样做吗?

1 个答案:

答案 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];

并在您的处理程序中(playBackStateChangedloadStateChanged

你可以这样做:

-(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。

希望我能帮助你 欢呼声 SAM