Content Hugging 和 Content Compression Resistance 的问题,Autolayout 约束

An issue with Content Hugging and Content Compression Resistance, Autolayout Constraints

我已将问题修改为提供更多信息且更清楚。

我想要一个动态的 table 视图单元格,具有灵活高度的 UITextView 和可选的 UIImageView。根据 UITextView 和可选的 UIImageView 的内容大小,可以缩小或扩展单元格。

这是我期望的(下图):

下面是视图结构:

然而,我实际得到的是如下

警告问题如下:

如果我通过选择"Add Missing Constraints"修复它,我得到的结果如下:

TextView 的约束、Content Hugging Priority、Content Compression Resistance 和 Intrinsic Size:

ImageView 的约束、内容压缩优先级、内容压缩阻力和内部大小:

我一直在研究 TextView 和 ImageView 的 Hugging Priority 和 Compression Resistance Priority,但没有成功。 None 的结果符合我的预期。

请帮忙指出设置中的错误以及如何实现我的目标。

这里棘手的部分似乎是当有图像时您希望它是 130x130 但当没有图像时您希望它被隐藏。

我的建议是为高度和宽度添加一个约束,即 <= 130 而不是 = 130,并为宽高比添加一个约束,即 1:1.

这将使图像视图在没有图像时缩小到 0x0。

当有图片时,它会缩放到图片大小,但保持正方形。它永远不会大于 130x130。不完全是你想要的,但很接近。

我认为您不必担心拥抱和挤压。

我认为要完全按照您的意愿行事需要代码。您需要为高度和宽度约束创建 IBOutlets,但这次让它们 =130。在您的代码中,当您将图像设置到图像视图中时,将代码中的约束常量设置为 130 或 0。我认为这是实现您所要求的唯一方法。为此,您可以按住 CTRL 键将宽度和高度约束拖到控制器的 .h 文件中,然后创建 IBOutlets。这就是我如何处理需要根据单元格数据模型的状态做出决定的约束。