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

时间:2015-12-12 13:50:49

标签: ios objective-c uiimageview autolayout uilabel

我有这个问题,因为现在很长一段时间它让我发疯了:我有一个UILabel文本可以动态更改,我有一个UIImageView应该充当文本&# 39; s背景。我希望UIImageView能够自我调整以适应UILabel的文本。

enter image description here

"付费和#34;可以成为" Free"或" Payant"例如,在法语中,后面的框应该总是调整大小。

使用Storyboard,我尝试在其顶部添加UILmageView和UILabel,并将UILabel的约束设置为UIImageView,但这最终会将UILabel的大小调整为UIImageView的大小。我无法为UIImageView设置固定的宽度或高度,因为它应该适应。

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

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:9)

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

标签的约束:enter image description here

您可以更改顶部并将其置于视图中的适当位置。

图片视图的约束:enter image description here