【问题标题】:UIStackView with proportional width to superviewUIStackView 与 superview 的宽度成比例
【发布时间】:2018-12-31 19:15:21
【问题描述】:

我需要根据 superview 的宽度增加水平 UIStackView 的大小。 UIStackView 中的所有按钮都是固定的宽度和高度。我尝试使用 stackview.width = superview.width * 0.3 设置自动布局约束,但它弄乱了超级视图的宽度。实现它的正确方法是什么?

【问题讨论】:

标签: ios autolayout uikit uistackview ios-autolayout


【解决方案1】:

这个

1-"buttons in UIStackView are fixed width & height"  

矛盾

2- "stackview.width = superview.width * 0.3"

因为你需要让它们变得灵活

所以要么忽略按钮的静态宽度、高度并设置

stackView.distriburion = .fillEqually

使它们均匀分布,或者忽略stackView的比例宽度并设置

stackView.distriburion = .fill

让它按大小增长

【讨论】:

    【解决方案2】:

    我需要根据 superview 的宽度增加水平 UIStackView 的大小。 UIStackView 中的所有按钮都是固定的宽度和高度。我尝试使用 stackview.width = superview.width * 0.3 设置自动布局约束,但它弄乱了超级视图宽度

    我不知道您所说的“它弄乱了超级视图的宽度”是什么意思。这就是约束 multiplier 的用途。如果你正确使用乘数,你会得到想要的结果。

    【讨论】:

    • 它使超级视图宽度更小。超级视图宽度重置为原始宽度的 0.3。
    • 那你没有按照我说的做。您没有使用约束乘数,或者没有正确使用它。
    【解决方案3】:

    你必须玩水平拥抱优先和水平抗压优先。

    通过降低 stackView 的压缩和拥抱优先级,您可以告诉 autoLayout 调整 stackView 的大小以适合 superView 而不是 superView 以适合 stackView。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      • 2017-12-05
      • 2015-06-09
      • 1970-01-01
      相关资源
      最近更新 更多