自定义MPMoviePlayerController(手势控制提高音量和进度)
来源:互联网 发布:java 开源网店 编辑:程序博客网 时间:2024/06/05 08:05
使用系统自定义的 MPMoviePlayerController。实现手势向上下滑动提高(降低)音量,手势向左右滑动控制快进和快退
#import <MediaPlayer/MediaPlayer.h>@interface KKBMoviePlayerController : MPMoviePlayerController<UIGestureRecognizerDelegate>@end
#import "KKBMoviePlayerController.h"#import "AppDelegate.h"@interface KKBMoviePlayerController(){ BOOL _inFullScreen; UIPanGestureRecognizer *_pan; CGPoint _lastPoint; BOOL _startChange; BOOL _changeVolume;}@end@implementation KKBMoviePlayerController- (id)initWithContentURL:(NSURL *)url{ self =[super initWithContentURL:url]; if (self) { self.view.backgroundColor = [UIColor clearColor]; self.initialPlaybackTime = -1; self.endPlaybackTime = -1; [self prepareToPlay]; [self play]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(enterFullScreen:) name:MPMoviePlayerWillEnterFullscreenNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(leaveFullScreen:) name:MPMoviePlayerWillExitFullscreenNotification object:nil]; } return self;}#pragma mark - full screen controller- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{ return YES;}- (void)handlePan:(UIPanGestureRecognizer*)rec{ if (_inFullScreen) { if (rec.state == UIGestureRecognizerStateBegan) { _lastPoint = [rec locationInView:self.view]; } else if (rec.state == UIGestureRecognizerStateChanged) { CGPoint nowPoint = [rec locationInView:self.view]; if (_startChange == NO) { if (fabs(nowPoint.y - _lastPoint.y) > fabs(nowPoint.x - _lastPoint.x)) { _changeVolume = NO; } else { _changeVolume = YES; } _startChange = YES; } else { if (_changeVolume) { //change volume float volume = [[MPMusicPlayerController applicationMusicPlayer] volume]; float newVolume = volume; if (nowPoint.x == _lastPoint.x) { } else { if (nowPoint.x < _lastPoint.x) { newVolume += 0.01; } else { newVolume -= 0.01; } } if (newVolume < 0) { newVolume = 0; } else if (newVolume > 1.0) { newVolume = 1.0; } [[MPMusicPlayerController applicationMusicPlayer] setVolume:newVolume]; } else { //change playback state if (self.playbackState != MPMoviePlaybackStateSeekingForward && self.playbackState != MPMoviePlaybackStateSeekingBackward) { if (nowPoint.y == _lastPoint.y) { } else { if (nowPoint.y < _lastPoint.y) { [self beginSeekingForward]; } else { [self beginSeekingBackward]; } } _lastPoint = nowPoint; } } } } else if (rec.state == UIGestureRecognizerStateCancelled || rec.state == UIGestureRecognizerStateEnded || rec.state == UIGestureRecognizerStateFailed){ _startChange = NO; [self endSeeking]; } }}- (void)enterFullScreen:(NSNotification*)notification{ _inFullScreen = YES; _pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; _pan.delegate = self; [[[[UIApplication sharedApplication] windows] objectAtIndex:0] addGestureRecognizer:_pan];}- (void)leaveFullScreen:(NSNotification*)notification{ _inFullScreen = NO; [[[[UIApplication sharedApplication] windows] objectAtIndex:0] removeGestureRecognizer:_pan];}@end
0 0
- 自定义MPMoviePlayerController(手势控制提高音量和进度)
- iOS流媒体开发之二:滑动手势控制音量、亮度和进度
- [绍棠] iOS流媒体开发:滑动手势控制音量、亮度和进度
- iOS流媒体开发之二:滑动手势控制音量、亮度和进度
- 视频播放器手势操作控制进度、音量、亮度
- IOS 手势音量控制
- 手势控制音量、亮度
- 自定义MPMovieplayerController的控制面板
- GL音乐播放器--代码实现<四>--进度控制和可隐藏的音量控制
- 自定义view之音量控制
- Android自定义音量控制图标
- 错误总结之播放器(vitamio)音量实体键与触摸手势控制,音量调节冲突
- Android 播放器中容易用到的进度条(音量控制,播放进度)
- 【基于QMediaPlayer的简易视频播放器】— 3、结合QSlider实现播放进度控制和音量控制
- 自定义MPMoviePlayerController
- 自定义MPMoviePlayerController
- XAudio2音量和音调控制
- 音量控制和音频播放
- 数学之美 概述
- 基于集合的二维数组迭代
- 蓝桥杯 格子刷油漆
- redis源码分析之t_string.c
- Android 项目中的R.java文件
- 自定义MPMoviePlayerController(手势控制提高音量和进度)
- Slow down time
- Unsupported major.minor version (jdk版本错误)解决方案 办法
- Leetcode--Sum Root to Leaf Numbers
- 再读《长尾理论》
- C++按文件夹读写图片
- 字符串转换成整数/带通配符的字符串匹配
- Linux网络编程中socket常见错误分析
- 黑马程序员_张老师的交通管理灯系统