代码之家  ›  专栏  ›  技术社区  ›  GarySabo

如何使tableView单元格在滚动时“粘住”

  •  0
  • GarySabo  · 技术社区  · 6 年前

    我在tableView顶部的单元格上有一个SegmentedControl(tableView由所有静态单元格组成)…我希望顶部单元格(和SegmentedControl)是“粘贴”的,这样当用户在表格中滚动时它总是可见的(见下面的屏幕截图)。这可能吗?

    enter image description here

    2 回复  |  直到 6 年前
        1
  •  0
  •   Ahmad F    6 年前

    通常,要应用此行为,您应该将其添加为 表头视图

    作为一个 解决办法 您可能需要添加一个新的UIViewController,它在顶部包含一个视图(头视图)和一个容器视图,如下所示:

    enter image description here

        2
  •  0
  •   Luzo    6 年前

    我脑海中闪现的一个老套的解决方案是:

    在VC中声明header,或保留引用:

    private var header: UIView = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 40))
    

    将其添加为tableView的子视图,并将“内容插入”设置为等于标题的高度。

    tableView.addSubview(header)
    tableView.contentInset.top = header.frame.height
    

    如果标题使用自动布局,则需要调用 view.layoutIfNeeded() 设置内容插入前

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        header.frame.origin.y = scrollView.contentOffset.y
    }