2017-11-25 405 views
0

刚开始在Xcode中开发iOS应用程序。Xcode Storyboard - 带多标签标签的多堆栈视图

Storyboard我有8套Labels需要放在水平/垂直Stack Views里面。其中之一是多行Label即行设置为2和文本有插入换行符Ctrl + 输入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 Views23应该展开以填充屏幕宽度的一半。两者都应该相应扩大。 Labels468应该扩大,以填补Stack View3剩余宽度,而357应该只有足够宽以适应文本。

我将使用约束到最外面的水平Stack View拥抱边缘。

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

但是添加一行Label和多LabelStack View通向Stack View成为zerowidthSingle line and multiline Labels added to a Stack View

添加这种垂直Stack View另一个Stack View使得极宽width的新新Stack ViewStack Views added to another Stack View

如果没有多行Label也按预期工作。如何通过多行Label实现我的预期布局?

我试过对Stack Views设置约束,但没有我已经尝试似乎工作。

编辑:我在这里找到了解决方案:Multiline label in UIStackView。我的问题是没有多个Labels(我正在寻找更早),而是多行Label。在添加到Stack View之前,将多行Label嵌入View内解决了此问题。

+0

你能分享你的故事板吗? –

回答

1

最外面的堆栈视图需要3个约束,顶部,前导和尾随。它会从contentSize中推断出高度约束。

您将需要在substackviews上设置水平内容拥抱和水平内容压缩值,以便最外层的堆叠视图知道哪个堆叠压缩/展开,如果它太少/太多空间(除非您选择的分配方法不同于填充,如同等大小)。

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

+0

尝试设置约束没有运气... 具体到我的情况,会是什么序列? – Kanchu

+0

这些都是正确的约束。您是否为每个子视图设置了水平内容拥抱和内容压缩?我不能告诉你在这里使用什么值,因为我不知道你的意图是什么,就像标签宽度一样。当您使用堆栈视图时,您需要具有1)固定比例的视图或间距,或者2)当空间或多或少有空间时,元素将如何收缩和展开的想法,以便您可以相应地设置内容属性。 –

+0

在添加到“StackView”之前,在'View'中嵌入多行'Label'解决了这个问题。 – Kanchu