使用自动布局将 UIButton 和 UILabel 居中

Posted

技术标签:

【中文标题】使用自动布局将 UIButton 和 UILabel 居中【英文标题】:Center UIButton and UILabel with Autolayout 【发布时间】:2016-02-01 16:27:46 【问题描述】:

我是 UIConstraints 的新手,我试图将 Auto Layout 的“继续按钮”和“不,谢谢”居中在 UICollectionView 和底部之间的空间中xib。我应该添加哪个UIConstraints

【问题讨论】:

你考虑过UIStackView吗? @PetahChristian 我第一次读到它。 @bruno 我强烈建议您考虑使用UIStackView 来布置您的视图。这是一个教程:如何做,我发现它很有帮助。 raywenderlich.com/114552/…。这是来自 WWDC 2015 的视频,也涵盖了它。在 5:15 秒左右是相关的部分--> developer.apple.com/videos/play/wwdc2015-218. @PetahChristian 在实施了 4 个 UIStackView 后我完成了多个约束,谢谢 ;) 不错!您应该将您的解决方案发布为您自己问题的答案,以便将来帮助其他人:) 【参考方案1】:

这是我的实现

如图所示,我使用不同的组件实现了 3 个堆栈视图。为了使它们全部“一个”,我将它们放在 Stack 中,约束

【讨论】:

【参考方案2】:

如果不想使用绝对值,则需要多两个透明视图才能获得想要的布局。

一个视图,应该添加到“继续”上方,它的上边距设置为collectionView,下边距设置为“继续”。 第二个视图应该放在“NoThanks”下,它的上边距设置为“NoThanks”,下边距设置为 superView 的底部。 通过添加与 superView 相等的左右边距,您可以让两个视图占据所有水平空间。

在你设置了我上面提到的约束之后,你必须在两个额外的视图之间再添加一个相等的高度约束。这将确保“继续”上方和“不,谢谢”下方的空格始终相等。

【讨论】:

听起来有点乱 @bruno 这是自动布局没有优雅解决方案的原因之一 @bruno:这是一个不错的解决方案。 这不再适用于 ios 9。您现在可以使用 UILayoutGuide 代替间隔视图。

以上是关于使用自动布局将 UIButton 和 UILabel 居中的主要内容,如果未能解决你的问题,请参考以下文章

带有背景图像和标题的 UIButton 使用自动布局

我想将自动布局应用于 UILabel,例如灵活的高度和宽度

使用自动布局时何时将 imageView 添加到 UIButton

尝试使用自动布局将 UIButton 添加到我的视图中,但它没有出现。为啥? [关闭]

UITableViewController 表头添加一个带有自动布局约束的 UIButton

使用自动布局(以编程方式)水平对齐 UIButton