带有“换行内容”宽度的UIStackView

问题描述 投票:1回答:1

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

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

请帮助理解,如何在代码中创建它(Swift语言)?

ios swift uistackview
1个回答
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中UILabels具有隐含的内容大小,因此它们根据内容获取大小。 Stack View也是如此。现在因为StackView必须根据它拥有的两个标签来推断它的高度,并且它们都具有相同的内容抗压性并且最终具有不同的高度以便解决混淆,它会寻求您的进一步帮助。您这样做指定正确的标签抵抗更多,以改变其隐含的垂直高度与左标签相比。

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

确认逻辑:

enter image description here

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

OP评论编辑:

正如OP在评论中建议关注的是宽度而不是高度,步骤4不是必需的,您的问题在第3步结束时得到解决。在设置内容拥抱优先级时自我

更改右侧标签内容UI更新,如下所示

enter image description here多数民众赞成:)希望有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.