Search code examples
iosvolumempmusicplayercontroller

Volume control with MPMusicPlayerController


I'm using MPMusicPlayerController to change system volume using my slider:

-(void)viewDidLoad{
     MPMusicPlayerController musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];
}

Then I have implemented following methods to change the sound:

-(IBAction)sliderValueChanged:(UISlider *)sender{
    [musicPlayer setVolume:  sender.value];
}
- (void)volumeChanged:(NSNotification *)notification
{
    float volume =[[[notification userInfo]   objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"]floatValue];
    [self.volumSeekbar setValue:musicPlayer.volume];
}

When I change volume with my seeker it shown the system volume controller, is there any way to prevent showing that?

edit: MPVolume default image with good quality but a little big! enter image description here


Solution

  • These are the images I use - I've only included the 1x sizes - thumb is 54 x 30

    [self.mpVolumeView setMinimumVolumeSliderImage:[UIImage imageNamed:@"master_volume_bar"] forState:UIControlStateNormal];
    [self.mpVolumeView setMaximumVolumeSliderImage:[UIImage imageNamed:@"grey_volume_bar"] forState:UIControlStateNormal];
    [self.mpVolumeView setVolumeThumbImage:[UIImage imageNamed:@"volume_thumb"] forState:UIControlStateNormal];
    

    master_volume_bar

    grey_volume_bar

    volume_thumb