覆盖UIStackView

时间:2016-03-26 18:11:46

标签: ios autolayout uistackview

我经常发现UIStackView对于特定布局是完美的,除了我需要在排列的子视图之间有一些可变间距。 UIStackView使用其spacing属性沿轴排列视图,但有没有办法覆盖它们?例如,我希望能够使用可视化格式添加单个手动约束来定义所需的间隙,并以某种方式取消对堆栈视图的优先级。

我当然可以完全放弃UIStackView,但是堆栈在隐藏子视图之间返回空间的能力非常难以手动复制(根据隐藏的视图添加和删除约束,例)。我还尝试将各个子视图包装在他们自己的堆栈视图中,以便我可以使用堆栈layoutMargins添加顶部边距。但是这需要管理包装器堆栈自己的隐藏状态以及它包含的子视图(令我惊讶的是 - UIStackView arrangedSubviews全部隐藏的状态不会自动隐藏本身,所以不会将其间距和边距回到自己的超视图上。)

1 个答案:

答案 0 :(得分:2)

从iOS 11开始,可以使用:

stackView.setCustomSpacing(spacing: CGFloat, after: UIView)