Ios 替代视图的间距

Ios 替代视图的间距,ios,autolayout,uistackview,Ios,Autolayout,Uistackview,我经常发现UIStackView非常适合特定的布局,只是我需要排列的子视图之间有一些可变的间距UIStackView使用其spacing属性沿其轴排列视图,但是否有方法覆盖这些视图?例如,我希望能够使用可视化格式添加单个手动约束,以定义所需的间隙,并以某种方式取消堆栈视图的优先级 当然,我可以完全放弃UIStackView,但是堆栈在隐藏的子视图之间返回空间的能力,手动复制是非常痛苦的(例如,添加和删除基于隐藏视图的约束)。我还尝试将各个子视图包装到它们自己的堆栈视图中,这样我就可以使用堆栈的l

我经常发现
UIStackView
非常适合特定的布局,只是我需要排列的子视图之间有一些可变的间距
UIStackView
使用其
spacing
属性沿其轴排列视图,但是否有方法覆盖这些视图?例如,我希望能够使用可视化格式添加单个手动约束,以定义所需的间隙,并以某种方式取消堆栈视图的优先级


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

从iOS 11可以使用:

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

不是最漂亮的,但您可以使用扩展添加一个“空格”数组,以创建空视图: