美文网首页
Tabelview滚动指定位置

Tabelview滚动指定位置

作者: 小李不木 | 来源:发表于2020-07-23 14:17 被阅读0次

1: tableView的contentOffset

tableView, 在数据源添加一条数据后reloadData,tableView的contentOffset值变了

iOS 11中,tableView默认启用Self-Sizing

openvarestimatedRowHeight:CGFloat 

// default is UITableViewAutomaticDimension, set to 0 to disable

openvarestimatedSectionHeaderHeight:CGFloat

// default is UITableViewAutomaticDimension, set to 0 to disable

openvarestimatedSectionFooterHeight:CGFloat

// default is UITableViewAutomaticDimension, set to 0 to disable

tableView的contentSize大小一开始也是不准确的,会随着滑动逐渐变化

解决只要关闭这个功能就可以了

tableView.estimatedRowHeight = 0

 tableView.estimatedSectionHeaderHeight = 0

 tableView.estimatedSectionFooterHeight = 0

2:iOS tableView 滚动到指定行/段

   UITableViewScrollPositionNone,

   UITableViewScrollPositionTop, // 顶部

   UITableViewScrollPositionMiddle, // 中间

   UITableViewScrollPositionBottom// 底部

最近选中的cell 滚动到指定位置 :

[self.tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionTop animated:YES];    

滚动到顶部 

[self.tableView setScrollsToTop:YES]; 

 让指定区域滚动到可视区域,如果已经在可视区域 则该方法无效 

[self.tableView scrollRectToVisible:CGRectMake(0,0,100,100)  animated:YES];

3.滚动到指定的IndexPath

滚动指定段的指定row  到 指定位置

[self.tableView scrollToRowAtIndexPath: [NSIndexPath indexPathForRow:0inSection:0] atScrollPosition:UITableViewScrollPositionTop  animated:YES];

通过设置ScrollView的contentOffset的方式滚动tableView到指定的位置

[self.tableView setContentOffset:CGPointMake(0,0)  animated:YES];

[mainTableView setContentOffset:CGPointZero.  animated:YES];

4: iOS tableView 刷新后滚动到指定行

 [CATransaction begin];

 [CATransaction setCompletionBlock:^{

    [self.tableView setContentOffset:CGPointMake(0, 0) animated:NO];                     

   }];

 [self.tableView reloadData];

 [CATransaction commit];

ScrollTop 的时候会出现滑动很大一部分空白区域。estimatedSectionHeaderHeight动态计算属性初始值不要设置太高,高出实际高度这里计算会出问题。

参考文章:

iOS tableView 滚动到指定行/段 以及遇到的bug 指南 - 简书

判断tableviewcell在可视区域的几种方法 - 简书

相关文章

网友评论

      本文标题:Tabelview滚动指定位置

      本文链接:https://www.haomeiwen.com/subject/xkzphktx.html