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