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