我有一个 UITableView,其中填充了一种自定义 UITableViewCell。每个单元格包含一个标题 (UILabel)、副标题 (UILabel) 和缩略图 (UIImageView),如下所示。
三个 subview 的宽度都是固定的,只有字幕标签的高度是固定的。标题标签的高度根据文本的数量是动态的。我已将标题标签的 numberOfLines
设置为 0 以反射(reflect)这一点。
我的目标:单元格的高度应由标题标签的高度决定。换句话说,单元格高度应该是两个标签的高度加上三个垂直填充间隙的总和。图像高度应设置为单元格的结果高度。
我当前的实现:我设置了以下自动布局约束:
- 缩略图在顶部、左侧和底部与 super View Hook
- 缩略图宽度与父 View 宽度成正比,乘以 0.2 的倍数
- 缩略图在其右侧与标题和副标题 Hook (尾随空格 = 8)
- 标题与顶部和右侧的 super View Hook (尾部空格 = 8)
- 标题在其底部与副标题 Hook (尾随空格 = 8)
- 标题高度大于等于24
- 副标题与右侧和底部的 super View Hook (尾随空格 = 8)
- 字幕高度等于20
另外:
- 标题
numberOfLines
= 0 - 缩略图
contentMode
= 宽高比填充 - 缩略图
clipToBounds
= true
问题:图像高度不符合标签的高度,因此单元格的高度设置为图像的全高,标题标签垂直拉伸(stretch)。考虑到我使用的约束,这是可以理解的,但这不是我想要发生的事情。
我的问题:如何限制 UIImageView 的高度以符合单元格高度(由动态标签高度确定),而不是让单元格高度符合 UIImageView 高度?
我的环境:
- Xcode 10
- iOS 11 和 12
- swift 4.2
最佳答案
尝试将 thumbnail
垂直 compression resistance
设置为低于 title
垂直 hugging priority
。在代码中它看起来像这样:
thumbnail.setContentCompressionResistancePriority(.defaultLow, for: .vertical)
titleLabel.setContentHuggingPriority(.required, for: .vertical)
关于ios - 约束 UIImageView 高度以尊重 UITableViewCell 中的动态 UILabel 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52602074/