Swift 4 - AVAudioPlayer 从 UISlider 设置 currentTime
Swift 4 - AVAudioPlayer set currentTime from UISlider
我有一个 UISlider
和 AvAudioPlayer
,目前我可以像这样将 UISlider
设置为 AvAudioPlayer
的 currentTime
:
timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: (#selector(RecordController.updateTimer)), userInfo: nil, repeats: true)
@objc func updateTimer() {
if(audio != nil) {
audioSlider.setValue(Float((self.audio?.currentTime)! / (self.audio?.duration)!), animated: false)
}
}
但是在更改 UISlider
的值时,如何设置 AVAudioPlayer
的 currentTime
?
@IBAction func audioSliderUpdated(_ sender: Any) {
}
可以使用AVAudioPlayer的currentTime属性:
@IBAction func audioSliderUpdated(_ sender: Any) {
if let slider = sender as? UISlider {
self.audio?.currentTime = slider.value
}
}
使用这个,滑块值随时间变化
@IBAction func slide(_ sender: UISlider) {
self.audio.currentTime = TimeInterval(slider.value)
}
您必须将滑块值转换为基于媒体文件的新值。
首先,您必须配置滑块值以使用标准化值(从 0.0 到 1.0)
/// call this on viewDidLoad: configDefaults(for: audioSlider)
func configDefaults(for slider: UISlider)
slider.minimumValue = 0.0
slider.maximumValue = 1.0
}
那么你应该从 audioSlider.value
和 duration
计算出 currentTime
然后将其设置为 player.currentTime
.
@IBAction func audioSliderUpdated(_ sender: Any) {
guard let slider = sender as? UISlider,
let player = audio else {
return
}
player.currentTime = Double(slider.value) * player.duration
}
我有一个 UISlider
和 AvAudioPlayer
,目前我可以像这样将 UISlider
设置为 AvAudioPlayer
的 currentTime
:
timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: (#selector(RecordController.updateTimer)), userInfo: nil, repeats: true)
@objc func updateTimer() {
if(audio != nil) {
audioSlider.setValue(Float((self.audio?.currentTime)! / (self.audio?.duration)!), animated: false)
}
}
但是在更改 UISlider
的值时,如何设置 AVAudioPlayer
的 currentTime
?
@IBAction func audioSliderUpdated(_ sender: Any) {
}
可以使用AVAudioPlayer的currentTime属性:
@IBAction func audioSliderUpdated(_ sender: Any) {
if let slider = sender as? UISlider {
self.audio?.currentTime = slider.value
}
}
使用这个,滑块值随时间变化
@IBAction func slide(_ sender: UISlider) {
self.audio.currentTime = TimeInterval(slider.value)
}
您必须将滑块值转换为基于媒体文件的新值。
首先,您必须配置滑块值以使用标准化值(从 0.0 到 1.0)
/// call this on viewDidLoad: configDefaults(for: audioSlider)
func configDefaults(for slider: UISlider)
slider.minimumValue = 0.0
slider.maximumValue = 1.0
}
那么你应该从 audioSlider.value
和 duration
计算出 currentTime
然后将其设置为 player.currentTime
.
@IBAction func audioSliderUpdated(_ sender: Any) {
guard let slider = sender as? UISlider,
let player = audio else {
return
}
player.currentTime = Double(slider.value) * player.duration
}