如何解决防止UITableView滚动直到Y偏移达到值
我有一个UIViewController
,其中包含2个子视图。标题视图和一个UITableView
。
我想基于表格视图滚动的偏移量Y来缩小标题视图。
我已经可以使用以下方法实现这一目标
import UIKit
class ViewController: UIViewController {
private let profileHeader: UIView = {
let view = UIView(frame: .zero)
view.translatesAutoresizingMaskIntoConstraints = false
view.backgroundColor = .systemTeal
view.heightAnchor.constraint(equalToConstant: 300).isActive = true
return view
}()
private let tableView: UITableView = {
let view = UITableView(frame: .zero)
view.translatesAutoresizingMaskIntoConstraints = false
view.showsVerticalScrollIndicator = true
view.register(UITableViewCell.self,forCellReuseIdentifier: "CELL")
return view
}()
private lazy var profileHeaderTopAnchor = NSLayoutConstraint()
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
tableView.backgroundColor = .systemGray
[profileHeader,tableView].forEach(view.addSubview(_:))
NSLayoutConstraint.activate([
profileHeader.leadingAnchor.constraint(equalTo: view.leadingAnchor),profileHeader.trailingAnchor.constraint(equalTo: view.trailingAnchor),tableView.topAnchor.constraint(equalTo: profileHeader.bottomAnchor),tableView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor),tableView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),tableView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor),])
profileHeaderTopAnchor = profileHeader.topAnchor.constraint(equalTo: view.topAnchor)
profileHeaderTopAnchor.isActive = true
}
}
extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
return 200
}
func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CELL",for: indexPath)
cell.textLabel?.text = "Cell #\(indexPath.row)"
return cell
}
}
extension ViewController: UITableViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let yAxisValue = scrollView.contentOffset.y
let headerHeightConstant = min(140,yAxisValue)
profileHeaderTopAnchor.constant = -headerHeightConstant
}
}
但是,这会导致某种视差效果,因为表格视图在页眉折叠时继续滚动。
parallax effect in current attempt
* edit-我无法嵌入图片,请查看链接的图片。
相反,我想复制Twitter iOS应用程序配置文件页面的行为。
在标题停止折叠之前,第一个单元格不应该滚动到屏幕之外,该折叠操作由scrollViewDidScroll
方法处理。
此外,在第一个单元格再次出现之前,页眉不应开始扩展。
顺序为:
向上滚动 标题折叠然后表格滚动
向下滚动 表格滚动,然后标题展开
这可能吗?
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。