设置高度:具有不同大小的自定义 Nib 的 TableViewCells
Posted
技术标签:
【中文标题】设置高度:具有不同大小的自定义 Nib 的 TableViewCells【英文标题】:Setting the height: TableViewCells with custom Nib that are different sizes 【发布时间】:2018-07-27 18:27:41 【问题描述】:我有一个 TableViewController,它在标识符“customCell”下有一个自定义 TableViewCell。下面是单元配置的图像以及连接到它的 IBoulets:
单元格从我的后端获取信息并呈现。描述文本视图(只是注意到我不小心将其命名为 descriptionLabel)不允许滚动,因此它会根据它所持有的内容进行扩展。数据库正在从数据库中正确处理,并显示在应用程序上。 唯一的问题是单元格的高度不正确。在通过其标识符注册此单元格的 TableViewControl 上,我使用 heightForRow 中的 UITableViewAutomaticDimension 自动设置单元格的高度:
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
return UITableViewAutomaticDimension
但这也不起作用。 *唯一有效的是当我将每个单元格的高度设置为标准值(例如 200)时。这对我不起作用,因为由于 textView 的长度,每个单元格的高度都会不同。
如何设置自定义笔尖 (tableViewCell) 的高度,以便根据其中的内容进行调整,而不是将高度设置为特定值?
【问题讨论】:
title 和 descriptionLabel 有限制吗? 【参考方案1】:1-删除两个textViews并用标签替换它们
2- 带有这些约束的标题 lbl 顶部,前导,尾随,.lines = 0
3- 带有这些约束的描述 lbl bottom ,leading,trailing to contentView,从上到下的标题 lbl , .lines = 0
当然你可以留下 2 个文本视图,但是你必须给每个文本视图一个初始高度并在
override func layoutSubviews()
super.layoutSubviews()
self.titleTvHeight.constant = self.titleTv.contentSize.height
self.desTVheight.constant = self.desTv.contentSize.height
//
别忘了在 VC 的 viewDidLoad
中设置这个
tableView.estimatedRowHeight = 200
tableView.rowHeight = UITableViewAutomaticDimension
无论如何你都可以删除heightForRowAt
【讨论】:
以上是关于设置高度:具有不同大小的自定义 Nib 的 TableViewCells的主要内容,如果未能解决你的问题,请参考以下文章
UIImageView 在具有不同高度的自定义 UITableViewCell 内自动调整大小
在具有动态高度的 IB uitableviewcell 中使用带有 XIB 的自定义视图
具有自动调整大小的单元格的自定义 UICollectionViewLayout 会因估计的项目高度较大而中断