TableView ContentInset 和 ContentOffset

TableView ContentInset and ContentOffset

我试图创建一个可伸缩的 table 视图 header 我在 post 网上看到了这段代码:

override func viewDidLoad() {
    tableView.contentInset = UIEdgeInsets(top: kTableHeaderHeight, left: 0, bottom: 0, right: 0)
    tableView.contentOffset = CGPoint(x: 0, , y: -kTableHeaderHeight)
    updateHeaderView()
}

我在理解这段代码时遇到了一些困难。

所以基本上它正在做的是(假设屏幕的高度是 0 到 500 并且 kTableHeaderHeight = 200):

1) 首先在 tableView 的顶部添加填充,方法是在 contentInset 属性 中将其向上移动 kTableHeaderHeight(此移动是尊重table视图的框架)。那么现在 tableView 是否存在于 -200 到 500 之间?

2) 然后它将边界向上移动 -kTableHeaderHeight。那么 contentOffset 只是让它在 -200 到 500 区域滚动吗?这就是我们在这种情况下使用 -kTableHeaderHeight 的 contentOffset 的原因吗?

1) 不,如果 inset 为正则它会使 table 视图区域变小,例如 200,500

2) contentOffset 是 tableview 的状态。因此,当您将偏移量设置为 -200 时,它会将内容零点从 table 视图零点移动到 200,而不管内容插入。基本上它将当前 table 视图内容放置在关于插图

应该放置的位置

所以该代码所做的是为自定义页眉保留 200 点位置,永远不会与 table 视图单元格内容重叠(正如 table 查看 API 页眉或页脚所做的那样)