uitableview的headerview如何做到上滑一定高度后不滚动了
时间: 2024-03-16 12:44:31 浏览: 167
要现 `UITableView` 的 `HeaderView` 在上滑一定高度后不滚动,可以通过实现 `UIScrollViewDelegate` 的 `scrollViewDidScroll` 方法来实现。
具体实现步骤如下:
1. 继承 `UITableView` 并实现 `UIScrollViewDelegate` 协议;
2. 在 `scrollViewDidScroll` 方法中判断当前 `contentOffset` 的值是否超过了指定高度,如果超过了,则将 `HeaderView` 的 `frame` 固定在顶部位置。
下面是示例代码:
```
class FixedHeaderViewTableView: UITableView, UIScrollViewDelegate {
let fixedHeight: CGFloat = 200 // 固定高度
override var contentOffset: CGPoint {
didSet {
// 在 contentOffset 发生变化时调用
scrollViewDidScroll(self)
}
}
override init(frame: CGRect, style: UITableView.Style) {
super.init(frame: frame, style: style)
self.delegate = self // 设置代理
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.contentOffset.y >= fixedHeight {
// 当 contentOffset 超过固定高度时,固定 headerView 的位置
var frame = self.tableHeaderView?.frame ?? CGRect.zero
frame.origin.y = scrollView.contentOffset.y
self.tableHeaderView?.frame = frame
}
}
}
```
在使用时,只需将 `FixedHeaderViewTableView` 当做普通的 `UITableView` 使用即可。
阅读全文