Я решил это, добавив новый MPVolumeView к моему представлению UIViewController, иначе он больше не устанавливал громкость.Когда я добавил его в контроллер, мне также необходимо установить положение просмотра громкости за пределами экрана, чтобы скрыть его от пользователя.
Я предпочитаю не использовать задержку настройки громкости, поскольку это усложняет задачу, особенно если вам необходимо воспроизвести звук сразу после настройки громкости.
Код указан в Swift 4:
let volumeControl = MPVolumeView(frame: CGRect(x: 0, y: 0, width: 120, height: 120))
override func viewDidLoad() {
self.view.addSubview(volumeControl);
}
override func viewDidLayoutSubviews() {
volumeControl.frame = CGRect(x: -120, y: -120, width: 100, height: 100);
}
func setVolume(_ volume: Float) {
let lst = volumeControl.subviews.filter{NSStringFromClass($0.classForCoder) == "MPVolumeSlider"}
let slider = lst.first as? UISlider
slider?.setValue(volume, animated: false)
}