Ios 自动布局中的相对中心

Ios 自动布局中的相对中心,ios,swift,autolayout,Ios,Swift,Autolayout,我正在使用自动布局来定位视图。 在我的例子中,上面是一个UILabel,下面是一个UIStackView。 UIStackView是为配置的。fill和它的所有排列子视图具有正确的高度约束。 我要做的是添加约束,使UIStackView垂直居中于myLabel.bottomAnchor&mySuperview.bottomAnchor之间的空间 到目前为止,我尝试的是: 为UIStackView添加顶部和底部约束: \u stackView.topAnchor.constraint(大于或等

我正在使用自动布局来定位视图。 在我的例子中,上面是一个
UILabel
,下面是一个
UIStackView
UIStackView
是为
配置的。fill
和它的所有
排列子视图
具有正确的
高度约束
。 我要做的是添加约束,使
UIStackView
垂直居中于
myLabel.bottomAnchor
&
mySuperview.bottomAnchor
之间的空间

到目前为止,我尝试的是:

  • UIStackView
    添加顶部和底部约束:
    • \u stackView.topAnchor.constraint(大于或等于:\u myLabel.bottomAnchor)
    • \u stackView.bottomAnchor.constraint(greaterThanOrEqualTo:\u mySuperview.bottomAnchor)
现在,它只需将大小正确的
UIStackView
放在
\u mySuperview
的底部即可

然而,我想要的是它在中心。 我看到有一个方法叫
anchorWithOffset(to:)
,听起来正是我需要的,但找不到正确的使用方法

所以我的问题是,如何将
ui视图
集中在两个给定的
nslayoutachor
之间


编辑:我知道我可以添加一个
UIView
,它是我的两个其他视图之间的约束,并将我的
UIStackView
放在中间。然而,我正在寻找一个更纯粹的解决方案。

看起来您希望在代码中而不是在故事板/xib中实现这一点,但这些通常对测试自动布局想法非常有用-一旦您在故事板中使用了它,那么您就可以清楚地知道需要编写哪些代码来实现同样的功能

您可以通过使用附加的垂直
UIStackView
来包装所需的
UIStackView
来实现这一点

在下面的示例中,我在内部
UIStackView
的上方和下方添加了空的
UIView
s,并将外部视图按比例设置为Fit

或者…


下一个代码完成以下任务:

let dimensionBefore = _myLabel.bottomAnchor.anchorWithOffset(to: _stackView.centerYAnchor)
let dimensionAfter = _stackView.centerYAnchor.anchorWithOffset(to: _mySuperview.bottomAnchor)
dimensionBefore.constraint(equalTo: dimensionAfter, multiplier: 1).isActive = true

但这只适用于iOS 10

我在回答时错过了你的“编辑”。不确定“更纯粹”的解决方案是什么意思我的意思是只使用适当的约束,而不使用其他视图。虽然你的答案确实有效,但我希望在这种情况下更多地了解自动布局的正确用法。感谢你提供了这个全面的示例!但是,我正在寻找一个不使用其他视图的解决方案。谢谢!正是我想要的。