iOS解决UITableView的contentOffset捕获不准确的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS解决UITableView的contentOffset捕获不准确的问题相关的知识,希望对你有一定的参考价值。

参考技术A 在做一个测试demo的时候,点击tabBar按钮,让tableVIew刷新数据,并且回到顶部设置好的内边距位置,第一次点击是好的,如果使用tableView底部上拉刷新功能,数据量多之后,再点tabBar回到顶部,设置好contentInset距离顶部的内边距,就会不对齐,会有遮挡

当tableView的Cell数量改变后再次reload,contentOffset的值是通过预估各cell的高度及header、footer的高度后计算得到的,并非准确的值。知道原理后,解决办法也就简单了,关闭系统自带的预估就好了estimatedRowHeight是一个预估高度,ios11之前是为0,在iOS11下,这个值默认为44

iOS UITableView 解决估算行高和指定行高的矛盾

1、一般来说 在iOS 中若UITableViewCell 固定行高, 会通过

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
         return 81;
}

来设置;

2、如果需要由系统自动估算行高, 可以通过设置以下代码实现:

// 动态行高
        self.tableView.rowHeight = UITableViewAutomaticDimension;
        // 预估行高
        self.tableView.estimatedRowHeight = 150;

3、如果一个tableview即想用固定行高又想用预估行高(自动计算行高) 这两者的矛盾怎样解决呢?以下代码 关键在于 这句话:

return UITableViewAutomaticDimension;
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == 0 || indexPath.section == 1) {
            return 81;
    }
    // 注意:解决固定行高和系统自动计算行高  其他组走系统自动计算行高
    return UITableViewAutomaticDimension;
}

 

以上是关于iOS解决UITableView的contentOffset捕获不准确的问题的主要内容,如果未能解决你的问题,请参考以下文章

ios8 UITableView设置 setSeparatorInset:UIEdgeInsetsZero不起作用的解决办法

iOS解决单击手势和UITableView的点击事件冲突

iOS UITableView 点击后图片自动放大

UITableview ios中的水平和垂直滚动视图

iOS UITableView reloadData 导致键盘收起不能连续输入问题解决办法

iOS解决UITableView的contentOffset捕获不准确的问题