我是该网站的新手,并迅速获得了有关问题技术的任何反馈。
我正在尝试使滑块的值更改播放的音频和文本标签(或图像)。
我创建了我的插座:
@IBOutlet weak var audioSlider: UISlider!
@IBOutlet weak var audioValue: UILabel!
和我的动作:
@IBAction func audioSliderValueChanged(sender: UISlider) {
var currentValue = (sender.value)
audioValue.text = (StringInterpolationConvertible: audioValue))
全部连接到一个滑块。我不确定如何解决这个问题 - 如果其他工作可以吗?
编辑:汉阳代码:
使用Avoundation在应用程序中的其他声音中已经有一个"做"。我进口基金会(已经进口了Avoundation)
我添加了:
@IBOutlet weak var audioSlider: UISlider!
@IBOutlet weak var audioValue: UILabel!
var audioSliderPlayer:AVAudioPlayer = AVAudioPlayer()
var currentTime: Double {
get {
return CMTimeGetSeconds(audioSliderPlayer.currentTime)
}
set {
let newTime = CMTimeMakeWithSeconds(newValue, 1)
audioSliderPlayer.seekToTime(newTime, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero)
}
}
并在DO函数之后添加以下内容(在ViewDidload中):
{timeObserverToken = audioSliderPlayer.addPeriodicTimeObserverForInterval(interval, queue: dispatch_get_main_queue()) {
[weak self] time in
self?.timeSlider.value = Float(CMTimeGetSeconds(time))
}}
}
我已经更新了操作:
@IBAction func timeSliderDidChange(sender: UISlider) {
currentTime = Double(sender.value)
}
但是,我仍然有错误的问题。另外,我将如何指定其播放的音频取决于值?
我想您要audioValue.text
显示出相同的滑块值,对吗?尝试以下操作:
@IBAction func audioSliderValueChanged(sender: UISlider) {
var currentValue = (sender.value)
audioValue.text = "(currentValue)"
}
如果您使用Avfoundation和Avplayer,Apple提供的样本源将有所帮助。
在此源中,分配具有获取和设置方法的VAR。在设置方法中,更新您的标签和播放器状态。(示例源代码段不更新标签,但您可以制作。)
var currentTime: Double {
get {
return CMTimeGetSeconds(player.currentTime())
}
set {
let newTime = CMTimeMakeWithSeconds(newValue, 1)
player.seekToTime(newTime, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero)
}
}
如果滑块更改,则它触发了变量的设置方法。标签和玩家状态将被更新。
@IBAction func timeSliderDidChange(sender: UISlider) {
currentTime = Double(sender.value)
}
将AddperiodiCtimeObserverForforForinterval方法添加到Avplayer。它将称为您设置的每个间隔并触发变量的设置器。
timeObserverToken = player.addPeriodicTimeObserverForInterval(interval, queue: dispatch_get_main_queue()) {
[weak self] time in
self?.timeSlider.value = Float(CMTimeGetSeconds(time))
}