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