ios - 系统媒体播放器进度作为 UISlider

标签 ios objective-c

我正在尝试显示一个用作进度条的 UISlider。我希望 UISlider 的进度是系统媒体播放器中正在播放的歌曲的当前进度。

这是我的代码:

在我的 headers.h 文件中:

static MPMusicPlayerController *musicPlayer;
NSTimer * currentTimeUpdateTimer;

UISlider *timeSlider;

在加载 View 中:

    musicPlayer = [MPMusicPlayerController systemMusicPlayer];

    timeSlider = [[UISlider alloc] initWithFrame:CGRectMake((((scrollView.contentSize.width/2)+(scrollView.contentSize.width/12))-10), 100, (((scrollView.contentSize.width/2)-(scrollView.contentSize.width/6))+20), 80)];
    timeSlider.backgroundColor = [UIColor clearColor];
    timeSlider.minimumTrackTintColor = [UIColor whiteColor];
    timeSlider.maximumTrackTintColor = [UIColor blackColor];
    timeSlider.alpha = 0.8;
    timeSlider.exclusiveTouch = YES;
    [scrollView addSubview:timeSlider];

在viewDidLoad中:

currentTimeUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateCurrentiPodItemTime) userInfo:NULL repeats:YES];

userIsScrubbing = NO;

这些是控制和设置UISlider的值的函数

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

if (nowPlayingItem == nil) {

} else {
double currentTime = musicPlayer.currentPlaybackTime;

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

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

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

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

但是发生的是 UISlider 值总是满的,并且不会随着歌曲的进行而进步。

UISlider 的意义在于还允许用户在正在播放的音乐中滑动。

最佳答案

我已经解决了。 uislider 的最大值为 1。因此我将最大值设置为歌曲的总长度(以秒为单位)。

关于ios - 系统媒体播放器进度作为 UISlider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38885437/

相关文章:

iphone -/usr/bin/codesign 失败,退出代码为 1

objective-c - 创建自定义 NSWindow 界面

ios - 当显示或关闭 UIAlertView 时获取通知,这是从另一个类显示的

objective-c - NSMutableArray。对象值未被替换

ios - 使用 UIBezierPath 绘制闪烁箭头

ios - 静态 UITableView 中的可滑动单元格

ios - 如何在 Swift 中制作放置在我的 UIViewController 中的水平可滚动组件?

ios - UISearchController 就像 Instagram Explore Tab

ios - 如何使用 AFNetworking 传递数组值?

objective-c - 知道对象何时被创建