UITableView实现抖音全屏滚动,短视频自动播放,下拉刷新,上拉加载。

UITableView实现抖音全屏滚动,短视频自动播放,下拉刷新,上拉加载。

不懂联系QQ903040553具体项目效果可看下载地址

https://apps.apple.com/cn/app/id1492426002

见笑了

之前看到一篇简书仿抖音滚动,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];


    }

}