2

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

4

1 回答 1

7

我们可以!

我猜你想要做的是在加载电影时显示活动指示符,而不是在播放时?我只是假设并继续...

在 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(如果您这样做,您不必关心隐藏和取消隐藏控件。

其余的很简单,只需将您的 activityIndi​​catorView 添加到 MPMovieViewController 的视图之上。

希望我能帮上忙

山姆

于 2010-07-09T12:11:51.923 回答