UIStackView 与 superview 的宽度成比例

Posted

技术标签:

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

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

【问题讨论】:

可能与***.com/questions/26373598/…重复 【参考方案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。

希望对你有帮助

【讨论】:

以上是关于UIStackView 与 superview 的宽度成比例的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将 UIButton 居中到 Superview 类(Swift 3)

UIScrollView 内的 UIStackView 与动态变化的项目

UITableViewCell 中的 UIStackView 与多行 UILabel

动态 UIStackView 与普通约束

superview.superview 上的透明 UILabel textColor(有点)

横向模式下基于百分比的布局(通过乘数查看与 Superview 相等的高度和宽度)时的问题