问题描述
我有一个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
相反,我想复制Twitter iOS应用程序配置文件页面的行为。
在标题停止折叠之前,第一个单元格不应该滚动到屏幕之外,该折叠操作由scrollViewDidScroll
方法处理。
此外,在第一个单元格再次出现之前,页眉不应开始扩展。
顺序为:
向上滚动 标题折叠然后表格滚动
向下滚动 表格滚动,然后标题展开
这可能吗?
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)