在UIStackView的开头和结尾添加填充

时间:2016-01-12 09:35:32

标签: ios uistackview

我最近一直在切换到UIStackView并尝试使用它进行所有布局,这比使用自动布局更容易......但有一个例外。

我有一个使用嵌套UIStackViews的布局和一个垂直堆栈视图,里面是一个水平堆栈视图。

喜欢这个......

|    Label    |
|    Label    |
|Button Button|
|    Label    |

这很好,但我现在想在按钮和屏幕边缘之间留一个空格。我可以在按钮之间设置空格,但不能在边缘设置空格。

有办法做到这一点吗?

我想要的是......

|   B     B   |

按钮都有背景颜色和圆角。我想在屏幕边缘和背景之间留一个间隙。

如果这是有道理的。

我找不到任何可以让我这样做的东西。

2 个答案:

答案 0 :(得分:0)

我意识到这是一个非常老的问题,但是您可以这样做:

  • 在水平堆栈视图的两侧添加0px宽的UIViews
  • 将其背景色设置为clearColor
  • 将水平堆栈视图的Distribution设置为Equal Spacing

[更新:我刚刚看到您在评论中提到了此内容]

答案 1 :(得分:0)

从 iOS 14 / Xcode 12 开始,StackView 没有 padding 属性。但我们可以设置布局边距。

  • 通过界面生成器:

enter image description here


  • 通过代码,可以配置堆栈视图以相对于其布局边距布置其排列的子视图:

stackView.isLayoutMarginsRelativeArrangement = true

<块引用>

对于 iOS > 10

stackView.directionalLayoutMargins = NSDirectionalEdgeInsets(top: 16, leading: 16, bottom: 16, trailing: 16)

<块引用>

对于 iOS <= 10

stackView.layoutMargins = UIEdgeInsets(top: 16, left: 16, bottom: 16, right: 16)


P.S 这种方法的缺点是,当 StackView 没有子视图时,它会保留其布局边距。因此,要移除内边距,我们应该通过代码设置一个边距为零的布局边距。