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

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
相关文章推荐