将 autoLayout 约束应用于多个对象

Posted

技术标签:

【中文标题】将 autoLayout 约束应用于多个对象【英文标题】:Applying autoLayout constraints to multiple objects 【发布时间】:2014-11-24 11:27:59 【问题描述】:

我在 ios 中使用 autoLayout 约束

我的用例是这样的,

我会用图片更好地解释

我正在为 UITableViewCell 使用自定义单元格,通过自动布局我为下面的文本和分隔线设置了约束,并且它们遵守自动布局约束。 现在您可以看到左侧的黄色竖条。

我没有给它设置任何约束,所以当cell高度正常时,它会覆盖整个cell,但是当cell高度增加时,它不会增加并填满整个cell。我无法使其高度灵活 w.r.t 到单元格。

我想扩展黄色条以覆盖整个单元格。

那么我该如何实现呢。

【问题讨论】:

向黄色视图添加顶部、底部、尾部和宽度约束。这将确保它以相同的宽度和高度在两个方向上都粘在右侧。对于标签,您不应将其与黄色视图居中,因为例如在上图中的第三个单元格中,如果您将标签与黄色视图居中,它将与底部的另一个标签重叠。只需将其放在底部标签上方即可。 【参考方案1】:

您可以通过设置 2 个约束来使黄色条带的高度灵活。

将容器(单元格的内容视图)的顶部空间和底部空间都设置为 0。 确保它没有恒定的高度限制。

【讨论】:

【参考方案2】:

您需要为黄色视图设置约束。默认情况下,它会在运行时应用自己的约束。

向黄色视图添加 TOP 、 BOTTOM 、 LEADING 和 TRAILING 约束。不要添加高度约束。

确保黄色视图的 TOP 和 BOTTOM 约束固定到单元格的内容视图。

让我知道它是否有效。

干杯

【讨论】:

如果您也有宽度约束,则不应有前导约束。这两个只能适用于一种屏幕尺寸。从 OP 的问题看来,宽度约束应该是你想要的。 @rdelmar 你说得对,但我假设 tableView 的宽度保持不变。 你好 Navin 如何在黄色条带上居中对齐 Uilabel 这样 UIlable 将始终位于黄色条带的中心,即使条带的高度增加或减少 由于 UILabel 总是以某种方式将文本置于其边界的中心,因此您可以使 UILabel 匹配视图的高度。

以上是关于将 autoLayout 约束应用于多个对象的主要内容,如果未能解决你的问题,请参考以下文章

iOS:在tableView中通过Masonry使用autolayout在iOS7系统出现约束崩溃

以编程方式将约束应用于 UIImageView 子视图

代码适配(Autolayout)

动画后自动布局约束不起作用[重复]

UIPageViewController 和 AutoLayout:未正确应用约束

删除特定对象的自动布局约束