iOS中视频播放器的简单封装详解

2020-01-18 16:55:21王振洲


//imageView添加手势
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)];
[self.imageView addGestureRecognizer:tap];

注意:如果使用xib给imageVIew添加手势,则通过loadNibNamed加载xib的时候需要获取返回数组的firstObject,得到的才是xib的View,如果获取lastObject,得到是的tap手势,会报错tap手势对象没有View的方法。

5、其他控件显示以及状态的设置


// 隐藏遮盖版
self.coverView.hidden = YES;
// 设置工具栏状态
self.toolView.alpha = 0;
self.isShowToolView = NO;
// 设置工具栏播放按钮状态
self.playOrPauseBtn.selected = NO;

这盖板只有播放完毕之后显现,点击重播之后又隐藏,因此使用hidden直接隐藏即可,而工具栏需要重复显示,并且我们为了能让工具栏的显示有动画效果,这里通过设置toolView的alpha来显示或隐藏工具栏,并通过isShowToolView来记录toolView的显示或隐藏。

6、中间播放按钮的点击


- (IBAction)playOrPauseBigBtnClick:(UIButton *)sender {
 // 隐藏中间播放按钮,工具栏播放按钮为选中状态
 sender.hidden = YES;
 self.playOrPauseBtn.selected = YES;
 // 替换播放内容
 [self.player replaceCurrentItemWithPlayerItem:self.playerItem];
 [self.player play];
 [self addProgressTimer];
}

此时,当我们点击中间播放按钮播放器就可以播放视频了。

二. 工具条的显示与隐藏

在播放状态时,当点击imageView,就会弹出底部工具条,可以查看当前播放的时间,视频总时间或进行暂停视频、全屏播放等操作。如果没有操作,工具栏会在5秒之后自动隐藏。而当未播放状态时,点击imageView和中间播放按钮效果一样,开始播放视频。

1、添加定时器,5秒钟之后隐藏底部工具条,并提供移除定时器的方法。


/** toolView显示时开始计时,5s后隐藏toolView */
-(void)addShowTime
{
 self.showTime = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(upDateToolView) userInfo:nil repeats:NO];
 [[NSRunLoop mainRunLoop]addTimer:self.showTime forMode:NSRunLoopCommonModes];
}
/** 将toolView隐藏 */
-(void)upDateToolView
{
 self.isShowToolView = !self.isShowToolView;
 [UIView animateWithDuration:0.5 animations:^{
  self.toolView.alpha = 0;
 }];
}
/**移除定时器*/
-(void)removeShowTime
{
 [self.showTime invalidate];
 self.showTime = nil;
}

2、imageView的tap手势点击方法实现,这里分为几种情况,当视频未播放的时候,点击imageView不会显示工具栏,而是与点击中间播放按钮相同,开始播放视频,播放过程中点击imageView会显示工具栏,而如果此时点击了工具栏中的暂停按钮,播放暂停,则此时工具栏不会消失,重新开始播放视频,工具栏在5秒内消失。