将UISlider的值设置为AVPlayer的当前时间。

7

我想将UISlider的值设置为AVPlayer的当前时间。

我尝试使用以下代码: audioPlayer.currentTime = nowPlayingSlider.value;

但是,我得到了这个错误:
需要设置器方法才能使用属性赋值语法分配对象
我该怎么办才能让它工作呢?

3个回答

10

我是这样处理的:

-(IBAction) timeScrubberChange:(id) sender{
CMTime t = CMTimeMake(self.nowPlayingTimeScrubber.value, 1);
self.nowPlayingCurrentTime.text = [self formatTimeCodeAsString: t.value];
self.nowPlayingDuration.text = [self formatTimeCodeAsString:(self.actualDuration - t.value)];
[self.avPlayer seekToTime:t];                                
}

2
我做过类似的事情,但如果用户使用滑块太快进行scrobble,则会遇到问题。基本上,播放器加载,播放之前进行scrobble,然后点击播放。就像avplayer忽略了seek并将currentTime设置回0一样。 - BBonifield

3

Sam,请看这两个方法:

-currentTime和-seekToTime:

这里

它们在AVPlayer类中。


1

也许你搞反了?

要将滑块设置为声音的当前位置,应该是:

[nowPlayingSlider setValue:[audioPlayer currentTime]];

根据滑块的变化跳过音频:

[audioPlayer setCurrentTime:nowPlayingSlider.value];

请告诉我它是否有效。


很遗憾,setCurrentTime:不存在。 - Sam Baumgarten
你可能是对的。但它可以使用AVAudioPlayer。(请参见此问题。) - Mundi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接