获取系统音量
iOS的音量控制接口在MediaPlayer库中
- 首先要将该库导入 #import <MediaPlayer/MPVolumeView.h>
- 而MPVolumeView中负责控制音量的是它的子视图MPVolumeSlider,而这个类并未对外公开,所以我们应该将这个不公开的类赋值给能让我们控制的类,那么就需要遍历volumeView的子视图,把它找出来,并赋值给另外一个view
MPVolumeView *volumeView = [{MPVolumeView alloc] init];
UISlider *volumeViewSlider = nil;
for (UIView *view in [volumeView subviews]) {
if ([view.class.description isEqualToString:@"MPVolumeSlider"]) {
volumeViewSlider = (UISlider *)view;
break;
}
}
//设置框架
[volumeView setFrame:CGRectMake(-1000, -100, 100, 100)];
// change system volume, the value is between 0.0f and 1.0f
[volumeViewSlider setValue:0.3f animated:NO];
[self.view addSubview:volumeView];
// send UI control event to make the change effect right now. 立即生效
[volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside];
这时候我们就可以通过模拟器的±音量键来控制系统的音量了
获取app的内部音量
这需要我们去结合UISlider和AVPlayer的使用,通过改变UISlider的value值,进而来改变AVPlayer的音量大小
//设置声音slider
UISlider *volumeSlider = [[UISlider alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth - 100, 20)];
volumeSlider.center = CGPointMake(kControlBarCenterX, kControlBarCenterY -20);
volumeSlider.maximumValue = 1;
volumeSlider.value = 0.3;
volumeSlider.minimumTrackTintColor = [UIColor greenColor];
[volumeSlider addTarget:self action:@selector(handleVolumeAction:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:volumeSlider];
handleVolumeAction响应事件
#pragma mark - 该变音量
-(void)handleVolumeAction:(UISlider *)sender {
[self.player setVolume:sender.value];
}
这时我们已经可以通过拖动UISlider来改变它的value值进而改变AVplayer的音量