Xcode Storyboard - 具有多线标签的多个堆栈视图

时间:2017-11-25 11:02:10

标签: ios xcode user-interface storyboard

刚开始在iOS开发Xcode应用。

Storyboard我有八组Labels需要放在水平/垂直Stack Views内。其中一个是多行Label,即行设置为2,文本插入换行符 Ctrl + Enter Eight Labels with one being multiline

我想要实现的是(更像是概念性插图而不是视觉插图):

+---------------Stack View+1-(100%)-------------------+
| +--Stack View 2-(50%)-+ | +---Stack View 3-(50%)--+ |
| |Label 1              | | | +--Stack+View 4-----+ | |
| +---------------------+ | | |Label 3|Label 4    | | |
| |Label 2              | | | +-------+-----------+ | |
| |Multiline            | | +-----------------------+ |
| +---------------------+ | | +--Stack+View 5-----+ | |
|                         | | |Label 5|Label 6    | | |
|                         | | +-------+-----------+ | |
|                         | +-----------------------+ |
|                         | | +--Stack+View 6-----+ | |
|                         | | |Label 7|Label 8    | | |
|                         | | +-------+-----------+ | |
|                         | +-----------------------+ |
+-------------------------+---------------------------+

Stack View 1应与屏幕一样宽。 Stack Views 23应展开以填充屏幕宽度的一半。两者都应相应扩大。 Labels 468应展开以填充Stack View 3的剩余宽度,而3,{{1} }},5应该足够宽以适应文本。

我将对最外面的水平7使用约束来拥抱边缘。

将单行Stack View添加到Labels,甚至将这些Stack Views添加到Stack Views按预期工作。 Some single line Labels added to Stack Views

然而,向Stack View添加单行Label和多行Label会导致Stack View变为Stack View zeroSingle line and multiline Labels added to a Stack View

将此垂直width添加到另一个Stack View会使新的Stack View非常宽Stack ViewStack Views added to another Stack View

在没有多行width的情况下执行相同操作可以正常工作。如何使用多行Label实现我的预期布局?

我尝试在Label上设置约束,但我尝试的任何东西似乎都没有用。

修改:我在此处找到了解决方案:Multiline label in UIStackView。我的问题是没有多个Stack Views(我之前正在搜索),而是多行Labels。在添加到Label之前,在Label内嵌入多行View解决了问题。

1 个答案:

答案 0 :(得分:1)

最外面的stackview需要3个约束,top,leading和trailing。它将从contentSize推断出高度约束。

您需要在substackviews上设置水平内容拥抱和水平内容压缩值,以便最外层的stackView知道哪个堆栈要压缩/扩展,如果它有太少/太多的空间(除非您选择不同的分配方法而不是填充,如同相等的尺寸)。

您需要为具有多个标签的stackviews执行相同的操作。您还应该正确设置标签行为(即自动换行,缩小到适合,numberOfLines等)。