之前做的项目中有类似抖音播放视频的功能,并且需要添加上下拉刷新、上拉加载、左滑进入商品详情、右滑进入店铺的功能。故考虑用UITableView来实现这个功能。其中视频的循环播放用的UITableView实现,左右滑动用的转场动画实现。
关键代理方法 UIScrollViewDelegate
我们知道UITableView是继承自UIScrollView
//在这个代理方法中获取到当前屏幕展示的Cell
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
NSInteger index = scrollView.contentOffset.y/_playerScrollTab.frame.size.height;
//因为每次拖动都会走此代理方法。如果当前展示Cell没有发生变化,则不用做处理
if (index==endScrollIndex) {
}else{
endScrollIndex = index;
[self playVideo];
}
}
//重新初始化播放器,或者是重置播放器,播放新的视频url
- (void)playVideo {
PlayerScrollCell *cell = [_playerScrollTab cellForRowAtIndexPath:[NSIndexPath indexPathForRow:endScrollIndex inSection:0]];
VideoModel *willPlayModel = _videoDataArray[endScrollIndex];
_playUrl = [NSURL URLWithString:willPlayModel.videoUrl];
[cell addSubview:self.player.playerView];
}
备注:因为我的项目中使用的是PLPlayer,没有重置方法。所以我将上一个player释放,并且代理置nil。重新创建进行添加。实测中并没有很大的性能差异。其它比如金山等播放器都有reset方法,可以进行播放器重置。
网友评论