iam*_*old 5 uitableview uiscrollview ios swift
我有一个高度为 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)
Run Code Online (Sandbox Code Playgroud)
然后你需要将添加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)
Run Code Online (Sandbox Code Playgroud)
为 tableView 的第一部分添加高度为 100 的标题,以便单元格位于正确的位置:
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 100
}
Run Code Online (Sandbox Code Playgroud)
然后调整滚动时的框架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)
}
}
Run Code Online (Sandbox Code Playgroud)
演示:
小智 0
你需要的是实现viewForHeader inSection你的 tableView 的方法(记住让你的 ViewController 实现 tableviewDelegate 协议),一旦你得到它,你应该将 tableViewStyle 设置为UITableViewStylePlain
如果您有兴趣获得更多帮助,请分享您的代码。
| 归档时间: |
|
| 查看次数: |
6135 次 |
| 最近记录: |