iOS:更改StackView(在StackView内部)中TextField的高度

时间:2019-04-11 15:03:09

标签: ios xcode uitextfield constraints uistackview

我正在使用Xcode 10 / Swift 5 / iOS 12并获得以下布局:

enter image description here

红色(垂直)StackView设置为:

  • 分发:“均等填充”
  • 高度:300(固定)
  • 框架:10(每侧)
  • 间距:10

5个水平Sub-StackViews

  • 分发:“均等填充”
  • 每个像素高52((300-40)/ 5)-不固定!

蓝色视图仅占用剩余的屏幕空间(顶部与红色StackView对齐,底部与“ SuperView”对齐)。

标签会自动占用52个像素,但是我希望两个TextField恰好是30个像素(上下分别+11)。如果我只是设置高度,InterfaceBuilder会抱怨发生冲突,并且实际上没有进行任何更改。

如何在不改变周围水平StackView高度的情况下设置其高度?

1 个答案:

答案 0 :(得分:1)

这是一种解决方案-假设您希望堆栈视图中的每个“行”高52磅(标签具有绿色背景,只是为了使它们的框架更易于查看)。

enter image description here

红色堆栈视图:

Alignment: Fill
Distribution: Fill Equally
Spacing: 10

每个水平堆栈视图:

Alignment: Center
Distribution: Fill Equally
Spacing: 0

Red View-容纳Red Stack ViewBlue 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磅的高度。