【发布时间】:2018-12-31 19:15:21
【问题描述】:
我需要根据 superview 的宽度增加水平 UIStackView 的大小。 UIStackView 中的所有按钮都是固定的宽度和高度。我尝试使用 stackview.width = superview.width * 0.3 设置自动布局约束,但它弄乱了超级视图的宽度。实现它的正确方法是什么?
【问题讨论】:
标签: ios autolayout uikit uistackview ios-autolayout
我需要根据 superview 的宽度增加水平 UIStackView 的大小。 UIStackView 中的所有按钮都是固定的宽度和高度。我尝试使用 stackview.width = superview.width * 0.3 设置自动布局约束,但它弄乱了超级视图的宽度。实现它的正确方法是什么?
【问题讨论】:
标签: ios autolayout uikit uistackview ios-autolayout
这个
1-"buttons in UIStackView are fixed width & height"
矛盾
2- "stackview.width = superview.width * 0.3"
因为你需要让它们变得灵活
所以要么忽略按钮的静态宽度、高度并设置
stackView.distriburion = .fillEqually
使它们均匀分布,或者忽略stackView的比例宽度并设置
stackView.distriburion = .fill
让它按大小增长
【讨论】:
我需要根据 superview 的宽度增加水平 UIStackView 的大小。 UIStackView 中的所有按钮都是固定的宽度和高度。我尝试使用 stackview.width = superview.width * 0.3 设置自动布局约束,但它弄乱了超级视图宽度
我不知道您所说的“它弄乱了超级视图的宽度”是什么意思。这就是约束 multiplier 的用途。如果你正确使用乘数,你会得到想要的结果。
【讨论】:
你必须玩水平拥抱优先和水平抗压优先。
通过降低 stackView 的压缩和拥抱优先级,您可以告诉 autoLayout 调整 stackView 的大小以适合 superView 而不是 superView 以适合 stackView。
希望对你有帮助
【讨论】: