4

我最近一直在切换UIStackView并尝试使用它来完成我的所有布局,它比使用自动布局要容易得多......除了一个例外。

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

像这样...

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

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

有没有办法做到这一点?

我想要的是这个...

|   B     B   |

这两个按钮都具有带圆角的背景颜色。我想要屏幕边缘和背景之间的间隙。

如果这是有道理的。

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

4

2 回答 2

3

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

  • 通过界面生成器:

在此处输入图像描述


或者

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

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)


这种方法的 PS 缺点是,当 StackView 没有子视图时,它会保留其布局边距。因此,要删除填充,我们应该通过代码设置具有零边缘插入的布局边距。

于 2021-01-10T23:05:33.990 回答
0

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

  • 在水平堆栈视图的两侧添加 0px 宽的 UIView
  • 将它们的背景颜色设置为clearColor
  • 将水平堆栈视图设置DistributionEqual Spacing.

[更新:我刚刚看到你在评论中提到了这一点]

于 2018-07-20T14:57:31.323 回答