如何使滑块值更改对象或功能



我是该网站的新手,并迅速获得了有关问题技术的任何反馈。

我正在尝试使滑块的值更改播放的音频和文本标签(或图像)。

我创建了我的插座:

@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))
    }

最新更新