iOS播放器常用功能
2016-09-19 17:03
302 查看
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设备的音频镜像路由的控制功能。其中包含一个
MPVolumeSlider的
subview用来控制音量。这个
MPVolumeSlider是一个私有类,我们无法手动创建此类,但这个类是UISlider的子类。
遍历
MPVolumeSlider的
subview获取到这个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:self forKeyPath:@"brightness" options:NSKeyValueObservingOptionNew context:NULL];
在亮度变化后作出相应的调整:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { CGFloat sound = [change[@"new"] floatValue]; //处理对应的逻辑 }
相关文章推荐
- iOS 上常用的两个功能:点击屏幕和return退出隐藏键盘和解决虚拟键盘挡住UITextField的方法
- iOS 上常用的两个功能:点击屏幕和return退出隐藏键盘和解决虚拟键盘挡住UITextField的方法
- iOS 上常用的两个功能:点击屏幕和return退出隐藏键盘和解决虚拟键盘挡住UITextField的方法
- IOS导航器 + 表控制器 常用功能函数/属性
- ios和安卓测试包发布网站http://fir.im的注册与常用功能
- iOS 上常用的两个功能:点击屏幕和return退出隐藏键盘和解决虚拟键盘挡住UITextField的方法
- 猫猫学iOS(四十五)之常用的小功能比如打电话、打开网址、发邮件、发短信打开其他应用。
- iOS开发数据库篇—2.Sqlite常用语句及功能
- iOS 上常用的两个功能:点击屏幕和return退出隐藏键盘和解决虚拟键盘挡住UITextField的方法
- iOS 和 Android 测试托管平台 FIR.im 的注册与常用功能
- IOS的同步和异步,定位服务,常用功能使用,传感器
- iOS开发之应用常用功能
- ios小demo之图片播放器第一步:加载图片功能
- iOS常用小功能的实现
- iOS中常用功能的整理与备注
- 【iOS】iOS开发中常用的几个功能代码
- iOS 上常用的两个功能:点击屏幕和return退出隐藏键盘和解决虚拟键盘挡住UITextField的方法
- iOS 常用功能
- IOS 常用功能代码
- 猫猫学iOS(四十五)之常用的小功能比如打电话、打开网址、发邮件、发短信打开其他应用。