0

我试图创建一个可伸缩的表格视图标题,我在网上的一篇文章中看到了这段代码:

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向上移动它来将填充添加到顶部(此移动是相对于 tableView 的框架)。那么现在tableView是否存在从-200到500?kTableHeaderHeightcontentInset

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

4

1 回答 1

0

1) 不,如果 inset 是正数,那么它会使表格视图区域更小,比如 200,500

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

因此,该代码所做的是为自定义标题保留 200 点位置,该位置永远不会与表格视图单元格内容重叠(就像表格视图 API 页眉或页脚一样)

于 2016-08-07T09:01:36.573 回答