iOS - 使 UIImageView 调整大小以适应 UILabel 与 AutoLayout

iOS - Make UIImageView resize to fit UILabel with AutoLayout

我已经有一段时间遇到这个问题了,这让我发疯:我有一个 UILabel,其中的文本可以动态更改,我有一个 UIImageView 应该作为文本的背景。我希望 UIImageView 调整自身大小以始终适合 UILabel 的文本。

例如,

"Paid" 可能会变成 "Free",或者法语中的 "Payant",并且后面的框应该始终调整大小。

使用情节提要,我尝试添加一个 UIImageView 并在其上放置 UILabel,并将 UILabel 的约束设置为 UIImageView,但这最终会将 UILabel 的大小调整为 UIImageView 的大小。我无法为 UIImageView 设置固定的宽度或高度,因为它应该适应。

我的第二次尝试是创建一个 UIView,将其重新分类为 UIIimageView,将 UILabel 添加为子视图,使 UIView 调整为 UILabel 并以编程方式添加图像,但再次没有成功。

正确的做法是什么?

对于第一种方法,我假设您设置了具有相同垂直和水平中心以及相同高度和宽度的标签和图像视图。问题是布局引擎假设图像的固有尺寸比标签更重要。要更改它,您需要更改拥抱优先级和视图的压缩阻力。 转到标签(图片)的大小检查并将拥抱优先级增加到所需。这将使它的高度和宽度成为它的固有高度和宽度。您还可以降低图像视图的压缩阻力,因此更适合缩小尺寸。

标签的约束条件:

您可以更改顶部和引线以将其放置在视图中的适当位置。

图像视图的约束: