我正在使用Xcode 10 / Swift 5 / iOS 12并获得此布局:
红色(垂直)StackView设置为:
5个水平子StackViews:
蓝色View只占用剩余的屏幕空间(顶部与红色StackView对齐,底部与“SuperView”对齐)。
标签自动占据52像素,但我希望两个TextField正好是30像素(+11以上/以下)。如果我只设置高度,InterfaceBuilder会抱怨冲突并且实际上没有任何改变。
如何在不改变周围水平StackView高度的情况下设置高度?
这是一个解决方案 - 假设您希望堆栈视图中的每个“行”高52磅(标签具有绿色背景,只是为了使其框架更容易看到)。
红色堆栈视图:
Alignment: Fill
Distribution: Fill Equally
Spacing: 10
每个水平堆栈视图:
Alignment: Center
Distribution: Fill Equally
Spacing: 0
Red View
- 持有Red Stack View
和Blue View
--在所有四个方面都被限制在Zero to SuperView。
Red Stack View
以10分的成绩被限制在SuperView(这是Red View
)的Top,Leading和Trailing。
Blue View
以10分的速度被限制在SuperView(这是Red View
)的领先位置,尾随位置和底部位置,而顶部位于距离Red Stack View
底部10点的顶部。
唯一的高度约束是在Date Stack View
... Height = 52
上设置的。由于Red Stack View
的分布设置为Fill Equally
,因此剩余的水平堆栈视图将自动达到52的高度。
并且,通过在每个水平堆栈视图上设置Alignment: Center
,排列的子视图将居中对齐到52磅的高度。