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

iOS-调整UIImageView的大小以适合具有自动版式的UILabel-LMLPHP

例如,“付费”可能会变成“免费”,或者在法语中会变成“付费”,并且后面的框应始终调整大小。

我尝试使用Storyboard,在其顶部添加一个带有UILabel的UIImageView,并将UILabel的约束设置为UIImageView,但这最终将UILabel的大小调整为UIImageView的大小。我不能为UIImageView设置固定的宽度或高度,因为它应该适应。

我的第二个尝试是制作一个UIView,将其重新分类为UIIimageView,将UILabel添加为 subview ,将UIView调整为UILabel的大小,并以编程方式添加图像,但再次失败。

什么是正确的方法?

最佳答案

对于第一种方法,我假设您将标签和 ImageView 设置为具有相同的垂直和水平中心,以及具有相同的高度和宽度。问题在于布局引擎假设图像的固有尺寸比标签更重要。要进行更改,您需要更改拥抱优先级和 View 的抗压缩性。 iOS-调整UIImageView的大小以适合具有自动版式的UILabel-LMLPHP转到标签(图片)的尺寸检查,然后将拥抱优先级提高到必需的值。这将使其高度和宽度成为其固有的高度和宽度。您还可以降低 ImageView 的抗压缩性,因此更适合缩小尺寸。

标签的约束:iOS-调整UIImageView的大小以适合具有自动版式的UILabel-LMLPHP

您可以更改顶部并将其放置在 View 中的适当位置。

ImageView 的约束:iOS-调整UIImageView的大小以适合具有自动版式的UILabel-LMLPHP

10-08 06:06
查看更多