iOS下更改系统音量

iOS中,如果想更改系统音量,只有2个方法,一是使用私有方法;二是使用MPVolumeView

私有方法不在我们的讨论范围之列,我们来讨论一下如何使用。

用过一系列的音乐播放器都知道,添加一个MPVolumeViewView上,然后设置showsVolumeSlider = YES,就会有一个SliderView,用户滑动时,就能更改系统音量。

这样带来的问题就是,

  1. 会显示一个MPVolumeView;

  2. 需要手动触发滑动事件;

对于第一个问题很简单,MPVolumeViewhidden属性设置为YES即可;所以主要解决如何模拟用户手动滑动事件即可。

不多说,有了思路后就变得很简单了,下面奉上实现代码。

/*
 * 设置音量
 */
- (void)setVolume:(float)value {

    UISlider *volumeSlider = [self volumeSlider];
    self.volumeView.showsVolumeSlider = YES; // 需要设置 showsVolumeSlider 为 YES
    // 下面两句代码是关键
    [volumeSlider setValue:value animated:NO];
    [volumeSlider sendActionsForControlEvents:UIControlEventTouchUpInside];
    [self.volumeView sizeToFit];
}

- (MPVolumeView *)volumeView {
    if (!_volumeView) {
        _volumeView = [[MPVolumeView alloc] init];
        _volumeView.hidden = YES;
        [self.window addSubview:_volumeView];
    }
    return _volumeView;
}
/*
 * 遍历控件,拿到UISlider
 */
- (UISlider *)volumeSlider {
    UISlider* volumeSlider = nil;
    for (UIView *view in [self.volumeView subviews]) {
        if ([view.class.description isEqualToString:@"MPVolumeSlider"]){
            volumeSlider = (UISlider *)view;
            break;
        }
    }
    return volumeSlider;
}

扫码关注公众号
iOS下更改系统音量_第1张图片

你可能感兴趣的:(iOS)