UIStackView具有“包装内容”宽度

时间:2018-10-22 08:45:39

标签: ios swift uistackview

问题: 使用2个元素创建水平UIStackView enter image description here

带有“ 短文本2 ”的项目宽度应为“包装内容”。带有“ 长文本1 ”的项目应填充所有可用空间。

请帮助理解如何用代码(快速语言)创建它?

1 个答案:

答案 0 :(得分:2)

步骤1:将一个StackView添加到其左侧,右侧,顶部/底部约束。 (暂时忽略错误)

enter image description here

步骤2:拖动两个标签并将其添加到stackView(继续忽略警告)

enter image description here

步骤3:现在,您需要解决水平内容的歧义问题,因此将左侧标签的内容优先级更改为250,而将右侧标签的内容优先级保留为251

enter image description here

步骤4:现在是垂直高度的翘曲含量问题:)只需选择正确的标签并将其含量抗压强度设置为999,而将左边的标签抗压强度保持在751

enter image description here

如果您想知道内容压缩阻力和内容优先级以及所有内容如何变化,请阅读苹果文档以获取更多详细信息

仅提供简要说明,iOS UILabel中的内容大小是隐式的,因此它们根据内容来确定大小。堆栈视图也是如此。现在,由于StackView必须根据其具有的两个标签来推断其高度,并且它们都具有相同的内容抗压缩性,并且最终具有不同的高度才能解决混乱,因此它寻求您的进一步帮助。您这样做是为了指定右标签比左标签更能抵抗其隐式垂直高度的变化。

这意味着现在堆栈视图知道它必须考虑右侧标签的高度来调整其高度,同时它可以覆盖左侧标签的隐式大小:)

逻辑确认:

enter image description here

在更改右标签字体堆栈时,视图高度也会自动增加,并且左标签的高度也会增加:)

由OP编辑评论:

正如OP在评论中建议的那样,conern是宽度而不是高度,步骤4是没有必要的,您的问题将在步骤3的末尾解决。在设置内容优先级时,它会自动出现

有关更改右标签的内容UI更新,如下所示

enter image description here 就是这样:)希望能对您有所帮助