美文网首页将来跳槽用小知识点好东西
隐藏系统的音量视图MPVolumeView

隐藏系统的音量视图MPVolumeView

作者: 图长伴 | 来源:发表于2017-11-02 19:24 被阅读0次

    我们在做播放器的时候会调节播放器的音量.但是会弹出系统的音量视图.


    图-1

    但是产品还偏偏不要这个音量视图.人家要自己音量提醒UI.没办法那就隐藏吧.其实在网上找到比较多的资料都是在viewDidLoad:的方法里面这样写:

    self.systemVolumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(-2000.0, -2000.0, 1.0, 1.0)];

    [self.view addSubview:self.systemVolumeView];

    但是我不清楚大家调节音量的时候是用的什么方法.如果你用的是

    [[MPMusicPlayerController applicationMusicPlayer] setVolume:vol_Value];

    这样也不会隐藏系统视图同时会有系统的警告:


    图-2

    看这个张图就知道是什么意思了吧.这个方法被弃用了.让你用MPVolumeView调节音量的方法替代.

    我是用这种方法调节音量的.

    @property (nonatomic, strong) UISlider *volumSliderView;

    @property (nonatomic, strong) MPVolumeView *systemVolumeView;

    self.systemVolumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(-2000.0, -2000.0, 1.0, 1.0)];

    [self.systemVolumeView.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

    if([obj isKindOfClass:[UISlider class]]){

    self.volumSliderView = obj;

    }

    }];

    [self.view addSubview:self.systemVolumeView];

    //在需要调节音量的地方赋值

    self.volumSliderView.value = rightValve;

    如果用这种方法那在viewDidLoad:的那种写法是不能隐藏系统的音量视图的.查了一些资料.还是在大stackoverflow找到了答案.那就是在viewDidAppear:的方法里这样写:

    - (void)viewDidAppear:(BOOL)animated {

    [super viewDidAppear:animated];

    [self.systemVolumeView willMoveToSuperview:self.systemVolumeView.superview];

    [self.systemVolumeView didMoveToSuperview];

    }

    这两句是做什么的估计大家看方法名就明白了.就是把self.systemVolumeView移动到它的新的superView.然后就好了.

    希望能帮助和我有过一样困扰的你.

    当然,你也可以把一开始viewDidLoad:中的代码写到viewDidAppear:中那就不用写moveTo那两句代码了.但是你不觉得别扭吗?哈哈...

    相关文章

      网友评论

        本文标题: 隐藏系统的音量视图MPVolumeView

        本文链接:https://www.haomeiwen.com/subject/xnjapxtx.html