iOS 系统音量控制

1.MPVolumeView 控制系统音量
MPVolumeView是苹果提供的API,继承自UIView,外观与 UISlider 基本一样,使用很简单:

#import 

@implementation MixViewController {
    MPVolumeView *_volumetView;
}
    _volumetView = [[MPVolumeView alloc]initWithFrame:CGRectMake(50, 400, 300, 50)];
    [self.view addSubview:_volumetView];
@end

这样就向 view 中添加了一个 MPVolumeView ,可以通过拖动滑动条调整音量,并与系统媒体音量保持一致,使用简单。但是不能通过代码对系统音量进行调整,只能通过用户操作调整,有一定局限性。

2.使用MPMusicPlayerController
这个类本身用于音乐播放,但其有一属性 volume 可用于直接调整系统音量大小。

MPMusicPlayerController *mpc = [MPMusicPlayerController applicationMusicPlayer];
mpc.volume = value;

但使用时会发现这个 volume 属性已经被苹果废弃,并提示你使用MPVolumeView 进行替代。但这样使用是可以直接通过代码调整音量,例如你想使用两个按钮来控制音量增加减少。
例子:

#import "MixViewController.h"
#import 

@implementation MixViewController {
    MPVolumeView *_volumetView;
}

- (void)viewDidLoad {
    [super viewDidLoad];

    UIButton *add = [[UIButton alloc]initWithFrame:CGRectMake(250, 200, 100, 100)];
    [add setTitle:@"+" forState:UIControlStateNormal];
    [self.view addSubview:add];
    [add addTarget:self action:@selector(addVolume:) forControlEvents:UIControlEventTouchUpInside];

    UIButton *dec = [[UIButton alloc]initWithFrame:CGRectMake(100, 200, 100, 100 )];
    [dec setTitle:@"-" forState:UIControlStateNormal];
    [dec setFont:[UIFont systemFontOfSize:25]];
    [dec addTarget:self action:@selector(decVolume:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:dec];

    _volumetView = [[MPVolumeView alloc]initWithFrame:CGRectMake(50, 400, 300, 50)];
    [self.view addSubview:_volumetView];
    [_volumetView setTintColor:[UIColor greenColor]];
}

- (void) doneAction:(UIButton *)button {
    [self dismissView];
}

- (void)dismissView {
    [self dismissViewControllerAnimated:YES completion:nil];
}


- (void)addVolume:(UIButton *)button {
    MPMusicPlayerController *mpc = [MPMusicPlayerController applicationMusicPlayer];
    mpc.volume = mpc.volume + 0.1;
}

// This property is deprecated -- use MPVolumeView for volume control instead.
- (void)decVolume:(UIButton *)button {
    MPMusicPlayerController *mpc = [MPMusicPlayerController applicationMusicPlayer];
    mpc.volume = mpc.volume - 0.1;
}

@end

通过上面的代码即可实现用按钮控制音量,点击 + - 按钮时可以发现 MPVolumeView 对象的值也在发生变化,可见MPVolumeView时刻与系统音量保持一致。
iOS 系统音量控制_第1张图片

你可能感兴趣的:(iOS,OC,音量)