【发布时间】:2021-07-19 05:17:14
【问题描述】:
我正在创建一个音频播放器并使用UISlider 实时更新音频的播放时间。我决定使用周期性时间观察器来做到这一点:
player.addPeriodicTimeObserver(forInterval: CMTime(seconds: 1, preferredTimescale: CMTimeScale(NSEC_PER_SEC)), queue: .main) { time in
slider.setValue(Float(time.seconds), animated: false)
}
这是一个好的开始,但是我遇到了一个问题,当我尝试使用滑块更改/寻找时间时,它会触发(可以理解),因此我将其更改为:
player.addPeriodicTimeObserver(forInterval: CMTime(seconds: 1, preferredTimescale: CMTimeScale(NSEC_PER_SEC)), queue: .main) { time in
if !slider.isHighlighted {
slider.setValue(Float(time.seconds), animated: false)
}
}
这很好,但我面临的最后一个问题是,当我放开滑块时,它似乎很快将滑块值设置回设置新值之前的值,然后快速自行修复。请看下面的视觉效果:
再次澄清一下,我一松手,它就会像那样口吃,而不是在我试图滑动时
【问题讨论】:
-
两个答案看起来都可能有所帮助,但都没有提到这一点:
isContinuous。虽然它可能不是您想要的,但我想我应该向您指出这个属性。