如何在 UITableView 顶部添加一个一起滚动的视图,但滚动后粘在顶部

2024-01-18

我有一个高度为 100 像素的 UIView,位于 UITableView 之上。当我向上滚动时,我希望 UIView 与 UITableView 一起滚动,就好像它是它的一部分一样。当我的 UIView 的 50 像素被隐藏而无法向上滚动时,我想在继续向上滚动时将 UIView 固定在顶部。如何才能实现这一目标?我尝试使用更改 UIView 的顶部 NSLayoutConstraint 常量等于我的 tableview 的内容偏移量,但它们不以相同的速度滚动。


首先确保你的tableView是grouped:

self.tableView = UITableView(frame: CGRect(x: 0, y: (self.navigationController?.navigationBar.frame.maxY)!, width: self.view.bounds.size.width, height: (self.view.bounds.size.height - (self.navigationController?.navigationBar.frame.maxY)!)), style: .grouped)
self.tableView.delegate = self
self.tableView.dataSource = self
self.view.addSubview(self.tableView)  

然后你需要添加UIView进入subview你的tableView:

self.myView = UIView()
self.myView.backgroundColor = UIColor.green
self.myView.frame = CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: 100)
self.tableView.addSubview(self.myView)

为 tableView 的第一部分添加高度为 100 的标题,以便单元格位于正确的位置:

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 100
}

然后调整你的框架UIView滚动时:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let offset = scrollView.contentOffset.y
    if(offset > 50){
        self.myView.frame = CGRect(x: 0, y: offset - 50, width: self.view.bounds.size.width, height: 100)
    }else{
        self.myView.frame = CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: 100)
    }
}

Demo:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 UITableView 顶部添加一个一起滚动的视图,但滚动后粘在顶部 的相关文章

随机推荐