UITableView实现抖音全屏滚动,短视频自动播放,下拉刷新,上拉加载。
之前看到一篇仿抖音滚动,UIScrollView 自动播放,地址https://www.jianshu.com/p/bdf0a1fa2c6c,他的原理是3个播放器,上,中,下无限替换数据,改变UIScrollView的偏移量,来实现的,到我自己的项目里面发现需要刷新和加载,于是我想能不能用UITableView写,直接上代码。
1.创建UITableView,一屏一页。pagingEnabled为YES.
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight) style:UITableViewStylePlain];
_tableView.dataSource = self; //数据
_tableView.delegate=self;
_tableView.pagingEnabled = YES;
_tableView.opaque = YES;
_tableView.scrollsToTop = YES;
_tableView.bounces = NO;
_tableView.estimatedRowHeight = 0;
_tableView.estimatedSectionHeaderHeight = 0;
_tableView.estimatedSectionFooterHeight = 0;
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
2.停止滚动里面去赋值和加载
//减速完成(停止) 加载更多 和 赋值用
- (void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView{
CGFloat contentYoffset = scrollView.contentOffset.y;
NSInteger j = contentYoffset/kScreenHeight;
indexRow = j; //记住当前的行
获取第几页,
NSIndexPath *indexPath=[NSIndexPath indexPathForRow:j inSection:0];
_cell= [_tableViewcellForRowAtIndexPath:indexPath];
获取到当前的cell,
播放视频 我播放视频用的是KSYMoviePlayerController金山的
把播放器加到当前cell上,这样永远只有一个播放器,那个cell显示把播放器加到那个上面。
[self.playerreset:NO];
[self.playersetUrl:[NSURLURLWithString:model.targetPath]];
[self.playerprepareToPlay];
if (indexRow ==_dataSource.count-1) {
//到了最后一行
NSLog(@"到了最后一行");
page++;
//你请求接口的方法
}
}
3.下拉刷新
// 已经结束拖动 刷新用
- (void)scrollViewDidEndDragging:(UIScrollView*)scrollView willDecelerate:(BOOL)decelerate {
CGFloatcontentYoffset = scrollView.contentOffset.y;
NSIntegerj = contentYoffset/kScreenHeight;
if(j==0&&contentYoffset<=0) {
NSLog(@"我要刷新了");
[SVProgressHUD showWithStatus:@"数据加载..."];
firet=NO;//改为NO,重新刷新
page=1;
[_dataSource removeAllObjects];
[selfloadMp4List];
}
}