如何在UISlider中实现sender.selected if语句?

时间:2016-06-23 09:54:37

标签: ios swift avfoundation volume ibaction

我正在尝试创建一个滑块,根据滑块的值更改音频。因此,例如,如果滑块值为0,则不播放音频。如果值为1,则歌曲为'播放,如果值为2,则歌曲b'戏剧等。

我正在使用AVFoundation并创建了我的声音播放器:

var soundPlayer:AVAudioPlayer = AVAudioPlayer()

我在滑块上添加了插座:

@IBOutlet weak var audioSlider: UISlider!
@IBOutlet weak var audioSliderPlay: UISlider!

定义了音频的文件位置:

 let audioLocation = NSBundle.mainBundle().pathForResource("song a", ofType: ".mp3")

为我的播放器创建了一个do方法:

do {
audioSoundPlayer = try AVAudioPlayer (contentsOfURL: NSURL (fileURLWithPath: audioLocation!))
catch {
        print(error)
    }

创造了我的行动:

@IBAction func audioSlider(sender: UISlider) {
    if (!sender.selected) {
        audioSoundPlayer.play()
        audioSoundPlayer.numberOfLoops = -1
    }

现在 - 当选择任何值时,滑块当前会激活歌曲a。音频启动后,无法停止。我需要添加sender.value并创建定义值的变量,并选择我要添加的其他歌曲。

请帮帮忙?!

使用Amit问题编辑:

Amit - 我已将滑块的最大值更改为3,即3个音频。

在将以下内容添加到IBAction时,滑块只有在达到最大值时才播放一个音频:

@IBAction func audioSlider(sender: UISlider) {
    let sliderValue = (sender.value)
    if sliderValue == 1 {
       soundPlayer1.play()
        soundPlayer1.numberOfLoops = -1

    }
    else if sliderValue == 2 {
       soundPlayer2.play()
        soundPlayer2.numberOfLoops = -1


    }
    else if sliderValue == 3 {
        soundPlayer3.play()
        soundPlayer3.numberOfLoops = -1

    }
    else if sliderValue == 0 {
soundPlayer1.stop()
soundPlayer2.stop()
soundPlayer3.stop()
    }
}

2 个答案:

答案 0 :(得分:0)

将滑块的value属性设置为sender.value,将其类型转换为Int并根据需要更改音频。

在使用之前,您需要设置滑块的minimummaximum值。

将默认值设置为0,最小值设置为0,最大值设置为您的需要或歌曲数量。

您可以使用“pattern-match”运算符〜=:

let sliderValue = Int(slider.value)

if 100 ... 199 ~= sliderValue {
    print("play audio 1")
}
else if 200 ... 299 ~= sliderValue {
    print("play audio 2")
}

答案 1 :(得分:0)

1.将Slider的最大值设置为捆绑包中存在的音频文件数。

2.创建一个包含所有音频的文件名或资源路径的数组。  像

.btn.btn-primary.close {
  background: rgba(0, 0, 0, 0) linear-gradient(#007bcf, #0048cf) repeat scroll 0 0;
  border: medium none;
  border-radius: 5px;
  color: #fff;
  cursor: pointer;
  font-size: 26px;
  letter-spacing: 1px;
  padding: 10px 30px;
}