UITableView實現(xiàn)抖音全屏滾動,短視頻自動播放,下拉刷新,上拉加載。
之前看到一篇簡書仿抖音滾動,UIScrollView 自動播放,簡書地址http://m.itdecent.cn/p/bdf0a1fa2c6c,他的原理是3個播放器,上,中,下無限替換數(shù)據(jù),改變UIScrollView的偏移量,來實現(xiàn)的,到我自己的項目里面發(fā)現(xiàn)需要刷新和加載,于是我想能不能用UITableView寫,直接上代碼。
1.創(chuàng)建UITableView,一屏一頁。pagingEnabled為YES.
? _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight) style:UITableViewStylePlain];
? ? _tableView.dataSource = self; //數(shù)據(jù)
? ? _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.停止?jié)L動里面去賦值和加載
//減速完成(停止)? 加載更多 和 賦值用
- (void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView{
? CGFloat contentYoffset = scrollView.contentOffset.y;
? ? NSInteger j =? contentYoffset/kScreenHeight;
?indexRow = j; //記住當(dāng)前的行
獲取第幾頁,
NSIndexPath *indexPath=[NSIndexPath indexPathForRow:j inSection:0];
? ? ? ? _cell= [_tableViewcellForRowAtIndexPath:indexPath];
獲取到當(dāng)前的cell,
播放視頻 我播放視頻用的是KSYMoviePlayerController金山的
把播放器加到當(dāng)前cell上,這樣永遠(yuǎn)只有一個播放器,那個cell顯示把播放器加到那個上面。
?[self.playerreset:NO];
? ? ? ? ? ?[self.playersetUrl:[NSURLURLWithString:model.targetPath]];
? ? ? ? ? ? [self.playerprepareToPlay];
? if (indexRow ==_dataSource.count-1) {
? ? ? ? //到了最后一行
? ? ? ? NSLog(@"到了最后一行");
????? ? ? ? page++;
//你請求接口的方法
}
}
3.下拉刷新
// 已經(jīng)結(jié)束拖動? 刷新用
- (void)scrollViewDidEndDragging:(UIScrollView*)scrollView willDecelerate:(BOOL)decelerate {
? ? CGFloatcontentYoffset = scrollView.contentOffset.y;
? ? NSIntegerj =? contentYoffset/kScreenHeight;
? ? if(j==0&&contentYoffset<=0) {
? ? ? ? NSLog(@"我要刷新了");
?? ? ? [SVProgressHUD showWithStatus:@"數(shù)據(jù)加載..."];
?? ? ? ? firet=NO;//改為NO,重新刷新
? ? ? ? page=1;
? ? ? ? [_dataSource removeAllObjects];
????[selfloadMp4List];
? ? }
}