在AVplayer准备播放音乐时添加活动指示器

Fab*_*iar 4 audio-streaming ios avplayer

我开发了一个无线电应用程序,它正在工作.

我想放置一个活动指示器视图,以便当您触摸播放时它启动活动指示器视图,当音频开始时,活动指示器停止.

Tus*_*oul 9

这会将活动视图添加到视图的中心.在"IBAction"中添加此代码,您可以在其中处理播放按钮.

UIActivityIndicatorView *activityView=[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

    activityView.center=self.view.center;

    [activityView startAnimating];

    [self.view addSubview:activityView];
    [self.view userInteractionEnabled:NO];   //to avoid touch events when activity is on
Run Code Online (Sandbox Code Playgroud)

并停止活动指标的使用

[activityView stopAnimating];    
[activityView removeFromSuperview];
[self.view userInteractionEnabled:YES];
Run Code Online (Sandbox Code Playgroud)

这是关于AV基金会的链接.而这个答案 - >

使用KVO,可以通知玩家状态的变化:

player = [AVPlayer playerWithURL:fileURL];
[player addObserver:self forKeyPath:@"status" options:0 context:nil];
Run Code Online (Sandbox Code Playgroud)

PLAY按钮的事件中添加代码以启动UIActivityIndicator

状态更改时将调用此方法:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
                        change:(NSDictionary *)change context:(void *)context {
    if (object == player && [keyPath isEqualToString:@"status"]) {
        if (player.status == AVPlayerStatusReadyToPlay) {
            //DISABLE THE UIACTIVITY INDICATOR HERE
        } else if (player.status == AVPlayerStatusFailed) {
            // something went wrong. player.error should contain some information
        }
    }
}
Run Code Online (Sandbox Code Playgroud)