覆盖 UIStackView 的间距
Override spacing for a UIStackView
我经常发现 UIStackView
非常适合特定布局,除了我需要在排列的子视图之间有一些可变间距。 UIStackView
使用其 spacing
属性 沿其轴排列视图,但有没有办法覆盖这些视图?例如,我希望能够使用视觉格式添加一个手动约束来定义所需的间隙,并以某种方式降低堆栈视图的优先级。
我当然可以完全放弃 UIStackView
,但是堆栈在隐藏子视图之间返回 space 的能力手动复制非常痛苦(根据隐藏的视图添加和删除约束, 例如)。我还尝试将各个子视图包装在它们自己的堆栈视图中,以便我可以使用堆栈的 layoutMargins
添加上边距。但这然后需要管理包装器堆栈自己的隐藏状态,除了它包含的子视图的隐藏状态(令人惊讶的是 - 对我来说 - 一个 UIStackView
其 arrangedSubviews
全部隐藏不会自动隐藏自己,所以不会将其间距和边距返回给它自己的超级视图)。
从iOS11开始可以使用:
stackView.setCustomSpacing(spacing: CGFloat, after: UIView)
我经常发现 UIStackView
非常适合特定布局,除了我需要在排列的子视图之间有一些可变间距。 UIStackView
使用其 spacing
属性 沿其轴排列视图,但有没有办法覆盖这些视图?例如,我希望能够使用视觉格式添加一个手动约束来定义所需的间隙,并以某种方式降低堆栈视图的优先级。
我当然可以完全放弃 UIStackView
,但是堆栈在隐藏子视图之间返回 space 的能力手动复制非常痛苦(根据隐藏的视图添加和删除约束, 例如)。我还尝试将各个子视图包装在它们自己的堆栈视图中,以便我可以使用堆栈的 layoutMargins
添加上边距。但这然后需要管理包装器堆栈自己的隐藏状态,除了它包含的子视图的隐藏状态(令人惊讶的是 - 对我来说 - 一个 UIStackView
其 arrangedSubviews
全部隐藏不会自动隐藏自己,所以不会将其间距和边距返回给它自己的超级视图)。
从iOS11开始可以使用:
stackView.setCustomSpacing(spacing: CGFloat, after: UIView)