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

有些应用会需要我们隐藏系统的音量 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 
#import 

@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:@"[email protected]"] 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)




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





你可能感兴趣的:(iOS-功能,隐藏系统的音量,HUD,提示框,MPVolumeView,ios)