mgv mgv - 1 year ago 825
iOS Question

iOS 9: How to change volume programmatically without showing system sound bar popup?

I have to change volume on iPad and using this code:

[[MPMusicPlayerController applicationMusicPlayer] setVolume:0];

But this changing volume and showing system volume bar on iPad. How to change the sound without showing the volume bar?

I know,
is deprecated, and everybody says to use
. If this is the only way to solve my problem, then how to change the volume using
? I don't see any method in
that changes the sound.
Should I use some another classes together with

But it's preferable to use

Thank you in advice!


MPVolumeView has a slider, and by changing the value of the slider, you can change the device volume. I wrote an MPVolumeView extension to easily access the slider:

extension MPVolumeView {
    var volumeSlider:UISlider {
        self.showsRouteButton = false
        self.showsVolumeSlider = false
        self.hidden = true
        var slider = UISlider()
        for subview in self.subviews {
            if subview.isKindOfClass(UISlider){
                slider = subview as! UISlider
                slider.continuous = false
                (subview as! UISlider).value = AVAudioSession.sharedInstance().outputVolume
                return slider
        return slider