刚开始在iOS
开发Xcode
应用。
在Storyboard
我有八组Labels
需要放在水平/垂直Stack Views
内。其中一个是多行Label
,即行设置为2
,文本插入换行符 Ctrl + Enter 。
我想要实现的是(更像是概念性插图而不是视觉插图):
+---------------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
2
和3
应展开以填充屏幕宽度的一半。两者都应相应扩大。
Labels
4
,6
,8
应展开以填充Stack View
3
的剩余宽度,而3
,{{1} }},5
应该足够宽以适应文本。
我将对最外面的水平7
使用约束来拥抱边缘。
将单行Stack View
添加到Labels
,甚至将这些Stack Views
添加到Stack Views
按预期工作。
然而,向Stack View
添加单行Label
和多行Label
会导致Stack View
变为Stack View
zero
:
将此垂直width
添加到另一个Stack View
会使新的Stack View
非常宽Stack View
:
在没有多行width
的情况下执行相同操作可以正常工作。如何使用多行Label
实现我的预期布局?
我尝试在Label
上设置约束,但我尝试的任何东西似乎都没有用。
修改:我在此处找到了解决方案:Multiline label in UIStackView。我的问题是没有多个Stack Views
(我之前正在搜索),而是多行Labels
。在添加到Label
之前,在Label
内嵌入多行View
解决了问题。
答案 0 :(得分:1)
最外面的stackview需要3个约束,top,leading和trailing。它将从contentSize推断出高度约束。
您需要在substackviews上设置水平内容拥抱和水平内容压缩值,以便最外层的stackView知道哪个堆栈要压缩/扩展,如果它有太少/太多的空间(除非您选择不同的分配方法而不是填充,如同相等的尺寸)。
您需要为具有多个标签的stackviews执行相同的操作。您还应该正确设置标签行为(即自动换行,缩小到适合,numberOfLines等)。