且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在顶部插入行时保持 uitableview 静态

更新时间:2023-11-14 22:59:58

真的没必要把所有的行高都加起来,重新加载表格后的新 contentSize 已经代表了这一点.所以你所要做的就是计算 contentSize 高度的 delta 并将其添加到当前偏移量中.

There's really no need to sum up all rows height, the new contentSize after reloading the table is already representing that. So all you have to do is calculate the delta of contentSize height and add it to the current offset.

    ...
    CGSize beforeContentSize = self.tableView.contentSize;
    [self.tableView reloadData];
    CGSize afterContentSize = self.tableView.contentSize;

    CGPoint afterContentOffset = self.tableView.contentOffset;
    CGPoint newContentOffset = CGPointMake(afterContentOffset.x, afterContentOffset.y + afterContentSize.height - beforeContentSize.height);
    self.tableView.contentOffset = newContentOffset;
    ...