首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >音乐进度条

音乐进度条
EN

Stack Overflow用户
提问于 2011-10-25 02:20:30
回答 4查看 4.3K关注 0票数 2

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

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

EN

回答 4

Stack Overflow用户

发布于 2011-10-25 02:26:50

您可能想看看MPMusicPlayerController类引用--特别是currentPlayBackTime属性。从来没有玩过它,但看起来你想把它以某种方式呈现在界面上。

票数 3
EN

Stack Overflow用户

发布于 2012-06-08 07:47:54

这就是我在声明这些变量的头文件中实现的方法。

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;

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

代码语言:javascript
运行
复制
- (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;
}
票数 3
EN

Stack Overflow用户

发布于 2011-10-25 02:55:07

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

代码语言:javascript
运行
复制
- (void) updateProgressBar:(NSTimer *) timer {
    if (currentPlaybackTime != lengthOfSong) {
        [self.progressBar setValue:self.musicPlayer.currentTime];
    }
    else {
        [timer invalidate], timer = nil;
        [self.progressBar setValue:lengthOfSong];
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7880006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档