音乐进度条

时间:2011-10-24 18:20:30

标签: objective-c ios cocoa-touch ipod

我目前正在编写一个基于Apple的音乐应用程序,我想为它添加一个进度条。

如何制作进度条以显示我的应用在默认iOS的iPod应用中播放的音乐的进度?

4 个答案:

答案 0 :(得分:3)

您可能希望查看MPMusicPlayerController类引用 - 特别是currentPlayBackTime属性。从来没有玩过它,但看起来你想要接受它并在界面中以某种方式呈现它。

答案 1 :(得分:3)

这就是我如何实现这一目标的 在头文件中,我声明了这些变量。

NSTimer * currentTimeUpdateTimer;

'UISlider *timeSlider;

BOOL userIsScrubbing;

- (IBAction)handleScrubberTouchDown:(id)sender;

- (IBAction)handleScrubberTouchUp:(id)sender;

- (IBAction)handleScrub:(id)sender;

在viewDidLoad方法下的主文件中,我运行了一个NSTimer currentTimeUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateCurrentiPodItemTime) userInfo:NULL repeats:YES];

userIsScrubbing = NO;

之后,这是一个更新一切的问题。

- (void)updateCurrentiPodItemTime {
    MPMediaItem *nowPlayingItem = [self.musicPlayer nowPlayingItem];

if (nowPlayingItem == nil) {
    self.minLabel.text = @"00:00";

} else {
    NSNumber *duration = [nowPlayingItem valueForProperty:MPMediaItemPropertyPlaybackDuration];
    double currentTime = self.musicPlayer.currentPlaybackTime;
    self.minLabel.text = [NSString stringWithFormat: @"%02d:%02d", (int) currentTime / 60, (int) currentTime % 60];     
    self.maxLabel.text = [NSString stringWithFormat: @"%02d:%02d", [duration intValue] / 60, [duration intValue] % 60];

    if (!userIsScrubbing)
        self.timeSlider.value = (float) currentTime;
    }
}

- (IBAction)handleScrubberTouchDown:(id)sender {
     userIsScrubbing = YES;
}

- (IBAction)handleScrubberTouchUp:(id)sender {
    userIsScrubbing = NO;
}

- (IBAction)handleScrub:(id)sender {
    self.musicPlayer.currentPlaybackTime = timeSlider.value;
}

答案 2 :(得分:2)

添加计时器以每秒触发(1.0)并让它调用方法来更新进度条,如下所示:

- (void) updateProgressBar:(NSTimer *) timer {
    if (currentPlaybackTime != lengthOfSong) {
        [self.progressBar setValue:self.musicPlayer.currentTime];
    }
    else {
        [timer invalidate], timer = nil;
        [self.progressBar setValue:lengthOfSong];
    }
}

答案 3 :(得分:0)

在您的视图中添加UIProgressView并定期更新。

相关问题