Слайдер громкости в быстром

Я пытаюсь создать слайдер, который контролирует громкость 4 аудио файлов.

Вот мой код для аудио:

var ButtonAudioURL  = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("audio1", ofType: "mp3")!)

var firstplayer     = AVAudioPlayer()    
var ButtonAudioURL2 = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("audio2", ofType: "mp3")!) 

var secondplayer   = AVAudioPlayer()    
var ButtonAudioURL3 = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("audio3", ofType: "mp3")!)

var thirdplayer = AVAudioPlayer()    
var ButtonAudioURL4 = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("audio4", ofType: "mp3")!)

var forthplayer = AVAudioPlayer()

override func viewDidLoad() {

    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    firstplayer  = AVAudioPlayer(contentsOfURL: ButtonAudioURL, error: nil)        
    secondplayer = AVAudioPlayer(contentsOfURL: ButtonAudioURL2, error: nil)     
    thirdplayer  = AVAudioPlayer(contentsOfURL: ButtonAudioURL3, error: nil)       
    forthplayer  = AVAudioPlayer(contentsOfURL: ButtonAudioURL4, error: nil)

У меня есть звук для воспроизведения при нажатии каждой кнопки. Но мне просто нужно получить ползунок для управления громкостью каждого аудиофайла с каждой кнопки.

Как мне это сделать? Я посмотрел на ссылку на класс MPVolumeView на developer.apple, но я все еще в замешательстве, и в ссылке на developer.apple для MPVolumeView говорится о AirPlay. Можно ли это отключить?

Мне просто нужен слайдер для управления громкостью.

3 ответа

Ты рядом!

Перетащите слайдер в раскадровку и создайте IB outlet а также IB action для этого.

в IB action код, использовать firstPlayer.volume = sliderOutlet.value

Поскольку оба значения по умолчанию находятся в диапазоне от 0 до 1, они находятся в одном и том же масштабе, поэтому их можно использовать без масштабирования. Возможно, вам придется объявить AVAudioPlayers более глобально и иметь возможность увидеть, какая кнопка была нажата (например, переменная, которая хранит название нажатой кнопки). Таким образом, вы меняете правильную громкость, используя 4 оператора if, и не заканчиваете тем, что меняете громкость для игрока, который еще не был инициализирован.

Дайте мне знать, если это работает!

Если вы используете Swift 2, попробуйте это:

@IBOutlet weak var volumen: UISlider!
var reproductor = AVAudioPlayer()

после:

    @IBAction func sliderValueChanged(sender: UISlider) {

    let selectedValue = Float(sender.value)
    reproductor.volume = selectedValue

}

и попробуйте громкость слайдера во время воспроизведения звука. Это все. Я помог

Я использую Xcode 6. Я строю похожий пример, и я перетащил из ползунка в раскадровке в свой viewController и создал Outlet

@IBOutlet weak var volumeControl: UISlider!

после этого я создал действие

@IBAction func adjustVolume(sender: AnyObject) {
    if audioPlayer != nil {
        audioPlayer?.volume = volumeControl.value
    }
}

и это работает для меня. Вы можете создать 4 ползунка и назначить их каждому экземпляру AudioPlayer, который вы создали. В этой ссылке вы можете найти пример Воспроизведения аудио на iOS8 с использованием AVAudioPlayer http://www.techotopia.com/index.php/Playing_Audio_on_iOS_8_using_AVAudioPlayer

Другие вопросы по тегам