我经常发现UIStackView
对于特定布局是完美的,除了我需要在排列的子视图之间有一些可变间距。 UIStackView
使用其spacing
属性沿轴排列视图,但有没有办法覆盖它们?例如,我希望能够使用可视化格式添加单个手动约束来定义所需的间隙,并以某种方式取消对堆栈视图的优先级。
我当然可以完全放弃UIStackView
,但是堆栈在隐藏子视图之间返回空间的能力非常难以手动复制(根据隐藏的视图添加和删除约束,例)。我还尝试将各个子视图包装在他们自己的堆栈视图中,以便我可以使用堆栈layoutMargins
添加顶部边距。但是这需要管理包装器堆栈自己的隐藏状态以及它包含的子视图(令我惊讶的是 - UIStackView
arrangedSubviews
全部隐藏的状态不会自动隐藏本身,所以不会将其间距和边距回到自己的超视图上。)
答案 0 :(得分:2)
从iOS 11开始,可以使用:
stackView.setCustomSpacing(spacing: CGFloat, after: UIView)