iOS 自动布局 - 当您想让视图拉伸到其父级的完整大小时,正确的方法是啥?

Posted

技术标签:

【中文标题】iOS 自动布局 - 当您想让视图拉伸到其父级的完整大小时,正确的方法是啥?【英文标题】:iOS auto layout - when you want to make a view stretch to the full size of its parent, what is the correct way to go?iOS 自动布局 - 当您想让视图拉伸到其父级的完整大小时,正确的方法是什么? 【发布时间】:2019-05-22 16:37:19 【问题描述】:

我想让子视图拉伸到其父视图的全尺寸。 使用自动布局的正确方法是什么?

    将所有边固定到父视图(前、上、后、下边) 设置等宽+center-X+等高+center-Y

【问题讨论】:

我更喜欢使用第一个选项,前导、尾随、顶部和底部 equalToSuperView 您选择其中一个的唯一原因是 (a) 与您在整个应用程序中的编码方式保持一致,以及 (b) 如果视图可能发生更改并且您需要缩小视图某个方向(即从上到下,您需要一个底部锚点)。第三个原因是个人喜好。 【参考方案1】:

另外,您建议的两个选项都可以完成工作(前 1 个是常见的)

1-顶部,前导,等宽等高

2-底部,尾随,等宽等高

3-top,leading,trailing and equal height

4-顶部、底部、前导、等宽

也有很多方法可以做到这一点,没有比其他更正确的设置,最重要的是有不间断的约束,好像发生冲突时除了意外的 UI 结果之外还会出现性能问题

【讨论】:

【参考方案2】:

在我看来,选项 1 是唯一可行的方法。 这两个选项都可以解决问题,但我坚信 1 比选项 2 更“正确”。

自动布局是一种语言,因此我们应该正确使用它的语法。与语言一样,传递信息有多种方式,但有些方式比其他方式更好。

在这种情况下,选项 1 准确地描述了我们想要做的事情,并按字面意思描述它:将所有子边缘固定到其父边缘。 选项 2,是对居中视图的边缘情况的滥用,其中它的大小与另一个视图相同。如果我们口头指示我们的代码,这不是我们会说的。

【讨论】:

以上是关于iOS 自动布局 - 当您想让视图拉伸到其父级的完整大小时,正确的方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 iOS 自动布局在子视图控制器与其父视图之间建立约束

不等式的自动布局歧义

如何将织物画布拉伸到其父 div 的全宽

设置垂直空间iOS时自动布局图像拉伸[重复]

如何使用自动布局在其父视图的一半中启动视图?

iOS:在 iOS 7 和 iOS 8 上将约束应用于子视图的自动布局差异