gpt4 book ai didi

ios - 如何在iOS上实现 "vertical reveal"的效果,最好是用UITableView

转载 作者:行者123 更新时间:2023-11-28 23:26:20 25 4
gpt4 key购买 nike

我正在尝试实现类似于 this video 中可以看到的效果.

请注意,我说的是“垂直显示”效果,而不是“水平轮播”效果。

理想情况下,它应该与 UITableView 一起工作,但我知道这是不可能的。

最佳答案

您可以通过创建具有 tableView 父级高度的页脚 View 来实现此行为。

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

var footer: UIView!
var tableView: UITableView!
let cellId = "CellID"

override func viewDidLoad() {
super.viewDidLoad()

let redView = UIView()
redView.backgroundColor = UIColor.red
redView.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
redView.center = self.view.center
redView.autoresizingMask = [.flexibleLeftMargin, .flexibleTopMargin, .flexibleRightMargin, .flexibleBottomMargin]
self.view.addSubview(redView)

let footer = UIView()
footer.backgroundColor = UIColor.clear
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTap(sender:)))
footer.addGestureRecognizer(tapRecognizer)
self.footer = footer

let tableView = UITableView()
tableView.showsVerticalScrollIndicator = false
tableView.backgroundColor = .clear
tableView.dataSource = self
tableView.delegate = self
tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellId)
tableView.frame = self.view.bounds
tableView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
self.view.addSubview(tableView)
self.tableView = tableView
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath)
cell.textLabel?.text = "\(indexPath.row)"
cell.backgroundColor = .green
return cell
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 200
}

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return self.footer
}

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return self.view.bounds.height
}

@objc func handleTap(sender: UITapGestureRecognizer) {
self.tableView.frame.origin.y = self.view.bounds.height
self.tableView.contentOffset = .zero
UIView.animate(withDuration: 1) {
self.tableView.frame.origin.y = self.view.bounds.origin.y
}
}
}

关于ios - 如何在iOS上实现 "vertical reveal"的效果,最好是用UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58578955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com