【问题标题】:Are you supposed to add constraints to subviews of a Stackview?您是否应该向 Stackview 的子视图添加约束?
【发布时间】:2018-02-16 15:57:44
【问题描述】:

...因为我有一个与其父级水平居中的图像视图,并且它看起来是右对齐的。

【问题讨论】:

  • 我相信你不应该那样做。设置 uiStackView 的 distributionalignment 属性就足够了。如果它不起作用,那么你没有正确地做某事。您必须提供一个代码示例以获得帮助。
  • hmmm.... 您可能需要添加宽度和高度限制。如果您显示您正在尝试做的事情的屏幕截图,以及没有按您期望的方式工作的事情,那么提供帮助会更容易。

标签: ios autolayout uistackview


【解决方案1】:

是的,您可以向堆栈视图的排列子视图添加约束。来自UIStackView class reference

您可以提供额外的约束来指定堆栈视图的高度、宽度或两者。

后来:

您还可以通过向排列视图添加额外的约束来微调排列视图的外观。例如,您可以使用约束来设置视图的最小或最大高度或宽度。或者您可以定义视图的纵横比。堆栈视图在布局其内容时使用这些约束。例如,在图像视图中,有一个纵横比约束,在调整图像大小时强制保持一个恒定的纵横比。

注意

向堆栈视图中的视图添加约束时要小心避免引入冲突。作为一般经验法则,如果视图的大小默认返回到给定维度的固有内容大小,您可以安全地为该维度添加约束。

您通常不应尝试使用约束来更改堆栈视图中排列的子视图的位置,因为这几乎肯定会导致冲突。

如果您打算让这些约束影响整个堆栈视图的位置并且小心不要引起冲突,您可以约束已排列的子视图相对于堆栈视图之外的其他视图的位置。这将是对约束的相当复杂的使用。

【讨论】:

    【解决方案2】:

    您可以在放入堆栈视图的“图块”(视图)中做任何您想做的事情,但您不应该添加改变图块本身大小或位置的约束。堆栈视图为您管理图块。

    【讨论】:

    • 虽然我的回答不如 Rob 的那么彻底,但为什么投了反对票?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    相关资源
    最近更新 更多