iOS播放器常用功能

强制横屏

在播放器中常见强制横屏,例如,如下这种:

OC实现代码如下:

    if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {SEL selector             = NSSelectorFromString(@"setOrientation:");NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];[invocation setSelector:selector];[invocation setTarget:[UIDevice currentDevice]];int val                  = orientation;// 从2开始是因为0 1 两个参数已经被selector和target占用[invocation setArgument:&val atIndex:2];[invocation invoke];}

拖动调节音量

在播放器器中,通常是拖动来调节音量。需要使用到MPVolumeView
MPVolumeView是Media Player Framework中的一个UI组件,直接包含了对系统音量和Airplay设备的音频镜像路由的控制功能。其中包含一个MPVolumeSlidersubview用来控制音量。这个MPVolumeSlider是一个私有类,我们无法手动创建此类,但这个类是UISlider的子类。
遍历MPVolumeSlidersubview获取到这个slider

MPVolumeView *volumeView = [[MPVolumeView alloc] init];
for (UIView *view in [volumeView subviews]){if ([view.class.description isEqualToString:@"MPVolumeSlider"]){_volumeSlider = (UISlider*)view;break;}
}

添加对应的拖动手势

UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panDirection:)];
pan.delegate                = self;
[self.view addGestureRecognizer:pan];

对应的拖动事件为,这里仅仅是一个简单的例子,上下拖动时改变slider的value

    /***  pan手势事件**  @param pan 拖动手势*/- (void)panDirection:(UIPanGestureRecognizer *)pan{CGPoint veloctyPoint = [pan velocityInView:self.view];switch (pan.state) {case UIGestureRecognizerStateBegan:{ // 开始移动// 使用绝对值来判断移动的方向CGFloat x = fabs(veloctyPoint.x);CGFloat y = fabs(veloctyPoint.y);if (x > y) {// 水平移动_verticalPan = NO;}else if (x < y){// 垂直移动_verticalPan = YES;}break;}case UIGestureRecognizerStateChanged:{ // 正在移动if (_verticalPan) {self.volumeSlider.value -= veloctyPoint.y / 10000;}}case UIGestureRecognizerStateEnded:{ // 移动停止}default:break;}}

结果要在真机上测试才行,结果如下:

调节亮度

通洞调节亮度跟上面差不多,如下:

    [UIScreen mainScreen].brightness -= veloctyPoint.x / 10000;

只是没有提示,所以自己要自定义一个提示框BrightnessView。在中BrightnessView使用KVO观察[UIScreen mainScreen]的brightness的变化

    [[UIScreen mainScreen] addObserver:selfforKeyPath:@"brightness"options:NSKeyValueObservingOptionNew context:NULL];

在亮度变化后作出相应的调整:

    - (void)observeValueForKeyPath:(NSString *)keyPathofObject:(id)objectchange:(NSDictionary *)changecontext:(void *)context {CGFloat sound = [change[@"new"] floatValue];//处理对应的逻辑}

iOS播放器常用功能相关推荐

  1. Android开源音乐播放器之播放器基本功能

    系列文章 Android开源在线音乐播放器--波尼音乐 Android开源音乐播放器之播放器基本功能 Android开源音乐播放器之高仿云音乐黑胶唱片 Android开源音乐播放器之自动滚动歌词 An ...

  2. 网页中Flash播放器常用参数设置(转)

    网页中Flash播放器常用参数设置 2006-11-26 23:24 我们现在大部分人做网页,都是直接用DW插入flash,而且DW也是所见即所得,直接生成了相应的flash显示代码.可是我们又有多少 ...

  3. 播放器常用手势操控封装GestureView

    一.播放器常用手势操控包括: 1.单击显示和隐藏播放器控件: 2.双击播放暂停: 3.左侧上下滑动调节亮度: 4.右侧上下滑动调节音量: 5.左右滑动调节进度. 二.手势检测帮助类PlayerGest ...

  4. iOS播放器 - AVPlayer

    之前有说到在播放器中一点点小技巧,现在正式记录一下AVPlayer. 这里主要是说明用AVPlayer做音乐播放器的功能实现,所以不介绍AVPlayer中那个图层类. 首先我们要声明一下播放器,这里有 ...

  5. jsp网页嵌入PHP网页,JSP_(jsp/html)网页上嵌入播放器(常用播放器代码整理),这个其实很简单,只要在HTML上 - phpStudy...

    (jsp/html)网页上嵌入播放器(常用播放器代码整理) 这个其实很简单,只要在HTML上添加以上代码就OK了,前提是你的电脑上已经安装了播放器,如RealPlay. 还有更多的的播放器和设置可供选 ...

  6. 弹幕播放器php代码,苹果CMSV10弹幕播放器 记忆功能+m3u8+MP4.zip

    [实例简介]支持自动下一集 带记忆播放 弹幕等简单的功能 播放器只支持m3u8和MP4视频链接播放有效,其他格式的没有添加组件,会玩的可以自己二次修改开发 [实例截图] [核心代码] MacPlaye ...

  7. plotplay恢复默认设置_PotPlayer播放器常用设置

    PotPlayer 播放器常用设置 目录 一 前言 .......................................................................... ...

  8. 阿里云移动端播放器高级功能---直播时移

    基本介绍 通常都知道直播是无法seek拖动的,那么针对在直播中想回看之前直播过的内容的用户来说,直播时移就能派上用场.我们阿里云播放器支持了直播时移功能,用户能较为方面和快速的使用直播时移的功能. 先 ...

  9. 阿里云移动端播放器高级功能---截图和音频波形

    基本介绍 如果用户对视频播放中的某一帧画面特别感兴趣,可以使用截图功能将这一帧视频保存起来.另外有一种场景想知道是否有声音,或者想感知声音的大小震动频率等,可以通过显示一个声音的波形来形象的表示.如下 ...

  10. 阿里云移动端播放器高级功能---截图和音频波形 1

    基本介绍 如果用户对视频播放中的某一帧画面特别感兴趣,可以使用截图功能将这一帧视频保存起来.另外有一种场景想知道是否有声音,或者想感知声音的大小震动频率等,可以通过显示一个声音的波形来形象的表示.如下 ...

最新文章

  1. C++ 笔记(16)— 类和对象(类定义、类实例对象定义、访问类成员、类成员函数、类 public/private/protected 成员、类对象引用和指针)
  2. 基于 Spring Boot 和 Spring Cloud 实现微服务架构
  3. IOS 4.0 以上版本 home键退出 后台执行代码
  4. POJ3197(连分数表示)
  5. extjs 表格数据重新加载_一个简单的更改让PyTorch读取表格数据的速度提高20倍:可大大加快深度学习训练的速度...
  6. jquery $(this)和this
  7. java登陆挤下去代码_application作用域实现用户登录挤掉之前登录用户代码
  8. 用开源技术巧解代账公司开票据难题
  9. Excel—身份证生日提取
  10. F30.2018年版本北大中文核心期刊目录
  11. 基于ATMEGA128的密码锁
  12. 74LS138的结构
  13. 上涨趋势回踩均线选股器
  14. AI——六(图层、蒙版)
  15. HDU -2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(DP,贪心)
  16. 数据仓库建设---数据建模
  17. 谈谈大数据时代企业如何进行数据治理体系建设
  18. 不小心删除了360浏览器里收藏夹的内容,怎么恢复
  19. 数据挖掘建模的标准流程是什么,主要分为哪几步?
  20. java根据开始日期和结束日期计算天数

热门文章

  1. QML入门教程(12): Item介绍
  2. Github代码复现-IVIX中国波指计算
  3. 计算机普通用户禁止修改c盘,win10系统禁止Guest账户访问C盘的设置技巧
  4. MySQL学习笔记(6)
  5. 《广西经济社会发展报告(2019)》正式发布 聚焦发展热点
  6. 天狮集团云函数实践:自定义业务逻辑实现跨境电商全球直播
  7. QQ动态表情包如何制作 堪比沙漠骆驼gif
  8. 自动配置和 thymeleaf模板引擎
  9. html插入图片出现红叉,网页上的图片显示为红叉的解决方法
  10. Floyd-Warshall算法过程中矩阵计算方法—十字交叉法(转)