您的位置:首页 > 移动开发 > IOS开发

iOS_隐藏系统音量(MPVolumeView初探)

2016-08-25 16:02 483 查看
有些应用会需要我们隐藏系统的音量 HUD 提示框,之前我们都是用 "MPMusicPlayerController" 来进行隐藏,但在iOS7.0之后我们发现可以使用
“MPVolumeView” 来进行系统音量的自定义了,来来一起使用看看吧。

2016-09-08 MPVolumeView是什么?

MPVolumeView是Media Player Framework中的一个UI组件,直接包含了对系统音量和Airplay设备的音频镜像路由的控制功能。其中包含一个MPVolumeSlider的子视图用来控制音量。这个MPVolumeSlider是一个私有类,我们无法手动创建此类,但这个类是UISlider的子类。MPVolumeView的使用很简单,只需要将其加入到一个父视图中,给予父视图合适的大小,再创建MPVolumeView示例,将其加入到父视图中即可。

网上有人总结了两个缺点我们也列出来:
1.UI可定制的的程度低。 MPVolumeView只提供了有限的几个方法来定制其中的Slider和Route Button的样式,而且基本上只能靠换图片解决。如果你想把Slider操作换成Button或者其他的UI组件,那是不可能的。
2.没有额外的音量控制API。 目前为止没有发现iOS的公开API中有可以直接操作系统音量的,所以修改系统音量只能使用这个UI组件。
如果还想给UI加入手势操作来控制音量,这种直接使用MPVolumeView是做不到的,你需要用到MPVolumeSlider来实现。

------------------------------------------------------------------------------------------

老样子直接上代码(注释都写好了呦~)

//
//  ViewController.m
//  MPVolumeViewExe
//
//  Created by a111 on 16/8/25.
//  Copyright © 2016年 司小文. All rights reserved.
//

#import "ViewController.h"
#import <MediaPlayer/MediaPlayer.h>
#import <AVFoundation/AVFoundation.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

self.view.backgroundColor = [UIColor grayColor];
self.title = @"音量";

//自定义MPVolumeView 高度不能改变其他都可以
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(10, 200, 300, 100)];
//把自定义的MPVolumeView贴在view上
[self.view addSubview: volumeView];

//寻找建立UISlider;
UISlider* volumeViewSlider = nil;
//设置音量大小
volumeViewSlider.value = 0.7;
for (UIView *view in [volumeView subviews]){
if ([view.class.description isEqualToString:@"MPVolumeSlider"]){
volumeViewSlider = (UISlider*)view;
volumeViewSlider.backgroundColor = [UIColor yellowColor];
break;
}
}

//改变拖动条的图片
[volumeViewSlider setThumbImage:[UIImage imageNamed:@"img_Zbar_BarcodeSele_00@2x.png"] forState:UIControlStateNormal];

//改变拖动条的颜色,图片和颜色同时只能存在一个
//    volumeViewSlider.thumbTintColor = [UIColor orangeColor];
volumeViewSlider.minimumTrackTintColor = [UIColor redColor];
volumeViewSlider.maximumTrackTintColor = [UIColor blueColor];

// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

这中间还用到了 "UISlider" 的使用可以看我之前写的博客

http://blog.csdn.net/siwen1990/article/details/48446407

当然如果你只需要隐藏音量提示框,那么直接自己改变下frame就好了

//自定义MPVolumeView 高度不能改变其他都可以
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(-100, 0, 10, 10)];
//把自定义的MPVolumeView贴在view上
[self.view addSubview: volumeView];


另外这次的demo一样是放在了云盘


https://yunpan.cn/cMx3CuLyRnSfn (提取码:5262)










感谢观看,学以致用更感谢!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息