Слайдер громкости в быстром
Я пытаюсь создать слайдер, который контролирует громкость 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