изменение и скрытие громкости HUD (наложение громкости) во время воспроизведения музыкальной библиотеки в iOS 11 - PullRequest
0 голосов
/ 13 мая 2018

Я использую MPMusicPlayerController.applicationQueuePlayer для управления воспроизведением внутренней музыки.

extension MPVolumeView {
    var volumeSlider: UISlider? {
        showsRouteButton = false
        showsVolumeSlider = false
        isHidden = true
        for subview in subviews where subview is UISlider {
            let slider =  subview as! UISlider
            slider.isContinuous = false
            slider.value = AVAudioSession.sharedInstance().outputVolume
            return slider
        }
        return nil
    }
}

let player = MPMusicPlayerController.applicationQueuePlayer
player.shuffleMode = .off
player.setQueue(with: MPMediaItemCollection(items: [mediaItem]))
player.play()

let volView = MPVolumeView()
view.addSubview(volView)
UIApplication.shared.keyWindow?.insertSubview(volView, at: 0)
volView.frame.origin.x = -1000

/* I also tried:
MPVolumeView(frame: .zero)
MPVolumeView(frame: CGRect(x: -1000, y: -1000, width: 0, height: 0))
none of them works.
*/

// get the slider to change to volume
let slider = volView.volumeSlider!

// set the volume. when I change, the volume HUD appears. but I want to stop appearing.
slider.setValue(1, animated: false)

Я хочу знать при изменении громкости, как я могу остановить громкость HUD, появляющуюся?

Редакция.

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Системный том - это пользовательский опыт, которым вы можете пользоваться

UIApplication.shared.keyWindow?.insertSubview(MPVolumeView(), at: 0)
0 голосов
/ 13 мая 2018

Во-первых, обратите внимание, что копаться в MPVolumeView таким способом совершенно не поддерживается, и нет никаких обещаний, что он будет работать в будущих версиях iOS.Apple намеренно не предоставляет способ изменить общую громкость.Это именно та вещь, которая может быть перенесена в отдельный процесс в будущем.Apple перевела много подобных вещей в отдельные процессы.

(Я говорю все это, потому что я нахожусь в одной лодке с продуктом, который делает то же самое, и я работалболее года, чтобы разработать новое решение, которое не требует изменения объема. Вы не хотите делать это, если это не имеет решающего значения для продукта.)экран:

if let window = UIApplication.shared.windows.first {
    let volView = MPVolumeView()
    volView.frame = CGRect(x: -window.frame.size.width,
                           y: -window.frame.size.height, 
                           width: window.frame.size.width,
                           height: window.frame.size.height)
    window.addSubview(volView)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...