水平stackview标签以固定高度元素增长

时间:2018-08-22 10:21:11

标签: ios swift uistackview

我有一个水平堆栈视图,其中包含一个 UIImageView (1:1纵横比,高度32)和一个标签。由于具有一定高度,所以stackView会在右侧切断我的标签,所以我的行数不能超过一列。

enter image description here

我希望水平StackView的高度增加,因为标签需要显示其自己的文本,或者如果UIImageView的高度较大,则使用UIImageView的高度。

enter image description here

2 个答案:

答案 0 :(得分:3)

GitHub存储库:Source Code 检查FirstViewController内部的代码

说明:

步骤1: 更改StackView的约束,以使 height> = minValue 值。之后,其高度将根据UILabel的高度自动调整。

步骤2: 设置文本后,调用UILabel的sizeToFit方法。这将改变UILabel的框架。

lable.text = "SomeText Here. It will expalnd the StackView.omeText Here. It will expalnd the StackView.omeText Here. It will expalnd the StackView.omeText Here. It will expalnd the StackView.omeText Here. It will expalnd the StackView.omeText Here. It will expalnd the StackView.omeText Here. It will expalnd the StackView.omeText Here. It will expalnd the StackView."
lable.sizeToFit()

第3步: 将图像的缩放模式设置为Aspect Fit,并设置其高度和宽度约束。

第4步: 根据需要设置Stackview的对齐方式,我将其设置为top以使图像和Label保持在顶部。

最终结果:

StackViewLayout with adjustable height

约束:

enter image description here

答案 1 :(得分:3)

这是完整的解释,

如果您不给Imageview加上任何高度,那么它的外观

enter image description here

  

ImageView不断增长

如果您给Imageview高度,

enter image description here

  

标签缩小到imageview的高度

解决方案

将ImageView放入下面的视图中,

enter image description here

现在,给imageview适当的约束。现在它可以正常工作了。

输出:

enter image description here