隐藏系统的音量视图MPVolumeView

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



图-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)