IOS音量按钮操作踩坑之旅

最近一段时间在研究IOS开发需要用到音量按钮控制一些操作, 在网上找了一个开源的库 RBVolumeButtons , 一开始的时候用的好好的,昨天打开项目运行应用的时候,界面的左上角位置出现了AirPlay图标,找了老半天,终于让我找到了是RBVolumeButtons这个库的原因一旦添加了音量按钮操作控制,就会出现,因此对源码进行了一下研究.看到了如下这样一段代码

-(id)init
{
   self = [super init];
   if( self )
   {
      self.isStealingVolumeButtons = NO;
      self.suspended = NO;

      CGRect frame = CGRectMake(0, -10, 1, 1);
      self.volumeView = [[MPVolumeView alloc] initWithFrame:frame];
   }
   return self;
}

在这里讲MPVolumeView添加到了界面中,但是他的布局是 (0,-10,1,1)还不足以将其隐藏起来,因此将y左边调整到更大的一个值比如30,果然不见了.但是这种解决方案还是不够完美.因此找到了更好的解决方法 .
self.volumeView = [[MPVolumeView alloc] initWithFrame:frame];后调用如下代码

// 设置这句的原因是隐藏AirPlay按钮
[((MPVolumeView*)(self.volumeView)) setShowsVolumeSlider:NO];

接下来继续玩代码,之前音量控制的时候有时候会出现系统音量调节界面.实验了一下分为两种情况

  1. 设备后台有背景音乐正在播放,系统音量提示会隐藏掉
  2. 设备后台没有背景音乐播放,系统音量提示会自动呈现出来

下面是解决方法,在每次按键事件中调用下面这段代码,就不会再显示系统音量提示页面了.

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *error = nil;
if (audioSession.otherAudioPlaying) {
    [audioSession setActive:NO error:&error];
} else {
    [audioSession setActive:YES error:&error];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,196评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,971评论 25 708
  • 我是日记星球239号星宝宝,来自深圳的叶子。我是日记星球第五期的学员,我相信日积月累的力量,最美的年纪遇到最美的自...
    水晶妈咪阅读 224评论 0 0
  • 这几天粉丝涨的很厉害,自认为自己画的还不够好,每篇文章也没有教程。不应该啊。后来想了想是不是我每次一发文章都是画的...
    洋葱花阅读 345评论 7 10
  • 1、背景颜色 background-color: ;取值方式有两种redrgb(0,250,0)2、背景图片 ba...
    一Left一阅读 286评论 0 0