【发布时间】:2019-03-20 08:19:29
【问题描述】:
我有一个简单的UITableViewCell,其中包含UIImageView 和3 个UILabel。在这里,我提供一个正常的单元格外观以深入理解问题:
正如您所注意到的,描述标签可能很长,所以我将numberOfLines 设置为 0。但是当描述为空或小时,就会出现问题。细胞开始相互重叠。以下是描述为空或较小时的外观:
如果您注意到,图片会相互重叠。我对视图的限制如下:
UIImageView:通向superview,宽高,垂直居中BookName(顶部粗体标签):顶部和尾随到superview,指向
UIImageViewAuthorName(橙色标签):顶部到书名,尾随到superview,指向
UIImageView描述(灰色标签):尾随和底部到超级视图,顶部到 AuthorName 并导致
UIImageView(书籍图片)
我还提供了Content Hugging and Compression Resistance Priorities。我只为UILabel 提供它们。我为描述标签设置了最小的,以使其增长和缩小。
我做了什么来解决这个问题?
我意识到,如果描述为空,则单元格会变小。换句话说,标签决定了单元格的大小。另外,考虑到UIImageView 仅垂直居中这一事实,我认为我的约束不正确。所以,我决定摆脱UIImageView 垂直居中。我只为UIImageView 设置了顶部、前导、宽度和高度约束。其他约束与上述相同。但这并没有帮助,结果如下:
如您所见,UIImageView 超出了单元格边界。我认为这是因为我没有为UIImageView 提供底部约束。但我提供它是为了描述。因此,下一次尝试实际上是提供底部约束。因此,我为UIImageView 提供了顶部、左侧、底部和宽度约束。我让其他约束保持不变。最初,结果令我惊讶。以下是没有描述时单元格的外观:
看起来,一切都很好(无论如何,图像太小,它试图适应单元格大小,由标签控制),但是在滚动UITableView 之后,单元格正在改变它们的大小并以某种方式更新它们的约束。这是发生了什么:
我也尝试设置estimatedRowHeight和自动维度,但没有帮助,我不认为问题是通过这种方式解决的。因此,任何帮助表示赞赏。
【问题讨论】:
-
为您的描述标签设置一个高度限制,并将其 >= 设置为不会生成图像剪辑的值。
标签: ios uitableview autolayout