gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 00:43:51 25 4
gpt4 key购买 nike

我正在尝试显示一个用作进度条的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com