#ios #uicollectionview #avaudioplayer
Вопрос:
Я хочу динамически изменять громкость каждого воспроизводимого файла с помощью ползунка в UICollectionViewCell.
Я пытаюсь использовать следующий код и включить изменение громкости в функцию changeVolume, но это не работает. Как я могу решить эту задачу?
import UIKit
import AVFoundation
class SoundItemCell: UICollectionViewCell {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var slider: CustomSlider!
var audioPlayer: AVAudioPlayer?
@IBAction func changeVolume(_ sender: CustomSlider) {
guard let fileUrl = Bundle.main.url(forResource: "birds-sound", withExtension: "mp3") else {return}
audioPlayer = try! AVAudioPlayer(contentsOf: fileUrl)
audioPlayer?.setVolume(sender.value, fadeDuration: 0)
}
func play(item: ASMRSound, path: IndexPath) {
if item.soundPlaying {
guard let fileUrl = Bundle.main.url(forResource: item.soundName, withExtension: "mp3") else {return}
audioPlayer = try! AVAudioPlayer(contentsOf: fileUrl)
audioPlayer?.stop()
item.soundPlaying = false
titleLabel.textColor = .black
imageView.tintColor = .black
} else {
guard let fileUrl = Bundle.main.url(forResource: item.soundName, withExtension: "mp3") else {return}
audioPlayer = try! AVAudioPlayer(contentsOf: fileUrl)
audioPlayer?.numberOfLoops = -1
audioPlayer?.play()
item.soundPlaying = true
titleLabel.textColor = .systemOrange
imageView.tintColor = .systemOrange
}
}
}