【问题标题】:Adding padding to the beginning and end of a UIStackView在 UIStackView 的开头和结尾添加填充
【发布时间】:2016-01-12 09:35:31
【问题描述】:

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

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

像这样……

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

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

有没有办法做到这一点?

我想要的是这个……

|   B     B   |

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

如果有道理的话。

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

【问题讨论】:

  • 如何在按钮上设置插图
  • @Wain 移动内容但不改变背景。我已经更新了我的帖子来解释背景。谢谢
  • @Wain 好吧,“间隔视图”似乎暂时不会去任何地方。我让它做我想做的唯一方法是在堆栈视图的每一端添加零宽度视图。哈哈
  • 在垂直stackView的左右添加几个像素的padding怎么样?
  • @finneycanhelp 是的!您可以在 stock 视图上使用 layoutMargins 向其内部添加填充。

标签: ios uistackview


【解决方案1】:

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

  • 通过界面生成器:


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

stackView.isLayoutMarginsRelativeArrangement = true

对于 iOS > 10

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

对于 iOS

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


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

【讨论】:

    【解决方案2】:

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

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

    [更新:我刚刚看到你在 cmets 中提到了这个]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      相关资源
      最近更新 更多