我有一个简单的UITableViewCell
,其中包含UIImageView
和3个UILabel
。在这里,我提供了一个正常的单元格外观,以深入理解问题:
您注意到,描述标签可能很长,所以我将numberOfLines
设置为0。但是当该描述为空或很小时,就会出现问题。单元格开始相互重叠。说明为空或较小时,外观如下:
如果您发现,图片会相互重叠。我对视图的约束如下:
UIImageView
:导致视图,宽度和高度,垂直居中
BookName(顶部的粗体标签):顶部并拖至超级视图,导致UIImageView
AuthorName(橙色标签):顶部为BookName,后退为超级视图,导致UIImageView
说明(灰色标签):在视图的顶部和底部,到超级名,从顶部到AuthorName,最后到UIImageView
(书本图像)
我还提供了Content Hugging and Compression Resistance Priorities
。我只为UILabel
提供了它们。我设置了最小的描述标签,以使其增大和缩小。
我为解决该问题做了什么?
我意识到,如果描述为空,则单元格会变小。换句话说,标签决定了单元格的大小。另外,考虑到UIImageView
仅垂直居中的事实,我认为我的约束是不正确的。因此,我决定摆脱 UIImageView垂直居中。我仅为UIImageView
设置了顶部,行距,宽度和高度约束。其他限制与上述相同。但这没有帮助,结果如下:
如您所见,UIImageView
超出了单元边界。我以为是因为我没有为UIImageView
提供底层约束。但我提供它以供描述。因此,下一个尝试实际上是提供该底部约束。因此,我提供了UIImageView
的顶部,左侧,底部和宽度约束。我保留了其他限制。最初,结果令我惊讶。这是没有描述时单元格的外观:
似乎一切都很好(无论如何,图像太小,它试图适应由标签控制的单元格大小),但是在滚动UITableView
之后,单元格正在改变其大小并以某种方式更新它们的大小。约束。这是发生了什么:
我还尝试设置estimatedRowHeight
和自动尺寸,但这并没有帮助,我也不认为问题是通过这种方式解决的。因此,感谢您的帮助。
答案 0 :(得分:1)