这是我在UITableViewCell
中设计的自定义xib
。所选元素是UILabel
,需要根据文本量进行扩展。
在故事板单元格中,每个元素都具有恒定的高度和间距。
以下是我在UITableViewController
中的代码:
class TableViewController: UITableViewController {
private var exampleContent = ["This is a short text.", "This is another text, and it is a little bit longer.", "Wow, this text is really very very long! I hope it can be read completely! Luckily, we are using automatic row height!, Wow, this text is really very very long! I hope it can be read completely! Luckily, we are using automatic row height!"]
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self
self.tableView.dataSource = self
tableView.estimatedRowHeight = 224.0
tableView.rowHeight = UITableViewAutomaticDimension
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = Bundle.main.loadNibNamed("DescriptionOnlyCell", owner: self, options: nil)?.first as! DescriptionOnlyCell
cell.label.numberOfLines = 0
cell.label.text = exampleContent[indexPath.row]
return cell
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return exampleContent.count
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
代码的输出与故事板单元格完全相同,没有动态调整大小。
我已经在stackover上阅读了一些线程,其中大多数解释与上面发布的代码相同。虽然我怀疑故事板限制存在一些问题。任何提示都会非常有用。
答案 0 :(得分:2)
不是为标签设置常量高度值,而是为所有元素设置顶部和底部间距约束,并删除高度约束或将其优先级设置得更低。
答案 1 :(得分:0)
对所选标签执行以下操作:
- 设置行数= 0
- 设置lineBreak模式= WordWrap
- 将高度限制设置为> = 15
醇>
我依赖您分享的信息,设置了所有UI组件的垂直间距。
答案 2 :(得分:0)
我希望这会修复你的大小调整。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
tableView.layoutIfNeeded()
}