【发布时间】:2017-03-07 05:33:35
【问题描述】:
我还没有在任何地方找到答案,我不确定它是否可能,但我正在尝试右对齐水平UIStackView,这样如果子视图被隐藏,它们就会向右侧移动不是左边。以编程方式(在 Swift 中)或使用 Interface Builder
【问题讨论】:
标签: swift interface-builder uistackview
我还没有在任何地方找到答案,我不确定它是否可能,但我正在尝试右对齐水平UIStackView,这样如果子视图被隐藏,它们就会向右侧移动不是左边。以编程方式(在 Swift 中)或使用 Interface Builder
【问题讨论】:
标签: swift interface-builder uistackview
【讨论】:
最适合我的方法是将我的水平堆栈视图放在垂直堆栈视图中,并将垂直的对齐设置为前导
【讨论】:
与其他答案不同,解决方案实际上相当简单。您需要添加一个尾随约束,将堆栈视图固定到其父视图的后缘,然后添加一个前导约束,将其固定到父视图的前缘。
然而,诀窍是将领先的 stackview 约束关系从 equal 更改为 大于或等于。
这将允许堆栈视图的前沿捕捉到堆栈视图内容的固有宽度,有效地将所有内容固定到后沿。
垂直堆栈视图类似。用等于固定顶部,用小于或等于固定底部。
所以:
stackView.leadingAnchor.constraint(greaterThanOrEqualTo: parent.leadingAnchor).isActive = true
stackView.trailingAnchor.constraint(equalTo: parent.trailingAnchor).isActive = true
stackView.distribution = .equalSpacing
【讨论】:
我有一个水平方向的UIStackView,其中包含两个UIViews;隐藏其中一个视图会导致另一个视图全角传播。向剩余视图添加宽度约束导致保持所需宽度,但它向右移动。
TL;DR
在堆栈视图中添加一个隐藏的UIView,以显示另一个隐藏的间距。
【讨论】:
stackView.distribution = UIStackViewDistributionFill; & stackView.alignment = UIStackViewAlignmentCenter;