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动态计算属性初始值不要设置太高,高出实际高度这里计算会出问题。
参考文章:
网友评论