gpt4 book ai didi

Swift 3 - 自定义 TableView 单元格动态高度 - 以编程方式

转载 作者:行者123 更新时间:2023-11-28 12:16:56 24 4
gpt4 key购买 nike

我正在尝试为我的自定义表格 View 单元格设置动态高度...以编程方式。

在 Storyboard 中有很多教程可以做到这一点,但这是关于纯编程解决方案的:

class CustomTableViewCell: UITableViewCell {

var container: UIView = {
let view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()

override func awakeFromNib() {
super.awakeFromNib()

self.setupView()
self.addConstraints()
}

func setupView() {
self.contentView.addSubview(self.container)
self.container.backgroundColor = UIColor.cyan
}

func addConstraints() {
self.container.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor, constant: 0).isActive = true
self.container.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor, constant: 0).isActive = true
self.container.topAnchor.constraint(equalTo: self.contentView.topAnchor, constant: 0).isActive = true
self.container.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor, constant: 0).isActive = true
self.container.heightAnchor.constraint(equalToConstant: 200)
}

override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}

}

以及我在何处注册它的 View :

class CustomViewController: UIViewController {

var data: [Post] = []

let tableview: UITableView = {
let tableview = UITableView()
tableview.translatesAutoresizingMaskIntoConstraints = false
return tableview
}()

override func viewDidLoad() {
super.viewDidLoad()

self.setupView()
self.addConstraints()
self.getData()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

func setupView() {
self.view.addSubview(self.tableview)
self.tableview.delegate = self
self.tableview.dataSource = self
self.tableview.register(UINib(nibName: "CustomTableViewCell", bundle: nil), forCellReuseIdentifier: "CellCustom")
self.tableview.estimatedRowHeight = 100
self.tableview.rowHeight = UITableViewAutomaticDimension
}

func addConstraints() {
self.tableview.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 40).isActive = true
self.tableview.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: -40).isActive = true
self.tableview.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 40).isActive = true
self.tableview.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -40).isActive = true
}

func getData() {
// some networking stuff
}

}

extension CustomViewController: UITableViewDelegate {

}

extension StreamViewController: UITableViewDataSource {

func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CellCustom", for: indexPath) as! CustomTableViewCell

return cell
}

}

我只是想根据高度限制简单地调整我的自定义 tableview 单元格的大小:

self.container.heightAnchor.constraint(equalToConstant: 200)

但这不起作用..自定义 tableview 单元格保持在“44”..

谁能告诉我我的纯编程解决方案有什么问题?

谢谢和问候

最佳答案

问题似乎是高度限制未激活

func addConstraints() {
...
self.container.heightAnchor.constraint(equalToConstant: 200)
}

这就是 UITableViewAutomaticDimension 不起作用的原因。

将其更改为 self.container.heightAnchor.constraint(equalToConstant: 200).isActive = true 它应该可以工作

关于Swift 3 - 自定义 TableView 单元格动态高度 - 以编程方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46165080/

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