缩进 UITableViewCell 中的所有自动布局约束

Posted

技术标签:

【中文标题】缩进 UITableViewCell 中的所有自动布局约束【英文标题】:Indent on all Auto Layout constraints in UITableViewCell 【发布时间】:2014-10-14 02:57:40 【问题描述】:

我有一个自定义的UITableViewCell,我在 Interface Builder 中进行了布局并添加了必要的约束。

我的单元格的内容视图总是填满整个单元格,但我注意到内容视图的所有子视图都插入了 8 个点。约束的常量均为 0。我已将视图的 layoutMargins 设置为 UIEdgeInsetsZero。 ios 8 中是否有一些我忘记的默认行为?

提前致谢。

【问题讨论】:

在单元格中绑定约束时。它将添加相对于边距的约束。你可以删除它。按照步骤>点击该约束>右侧导航器>点击(第一项或第二项)>您可以看到“相对于边距”选项已打开。只需取消选中该选项,您就会得到正确的位置。 谢谢,这成功了。如果您发布作为答案,我可以接受。有什么办法可以让这成为整个视图的默认行为? 我不这么认为可能是因为这仅在 ios8 中。如果您的目标是 7&8,那么您将收到“相对于 8.0 之前的 iOS 版本的布局边距的布局属性”的警告。如果你的目标只有 8,那么你不会收到警告。 【参考方案1】:

按照步骤进行

点击该约束>右侧导航器>点击(第一项或第二项)>您可以看到“相对于边距”选项已打开。只需取消选中该选项,您就会得到正确的位置。

【讨论】:

我刚刚注意到在 IB 中添加约束时,您可以取消选中“约束到边距”框 @Ricky 是的,当使用底部“pin”选项添加约束时。但是如果您使用 TopMenu > Editor option > pin 添加约束。那么您将无法获得该选项:) 你知道是否有办法覆盖 8 的值吗? 原来你需要设置单元格内容视图的layoutMargins属性。 例如当单元格出列时,可以设置 layoutMargins 属性。 cell.layoutMargins = UIEdgeInsetsMake(8, self.tableView.layoutMargins.left, 8, self.tableView.layoutMargins.right); cell.contentView.layoutMargins = cell.layoutMargins;

以上是关于缩进 UITableViewCell 中的所有自动布局约束的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 UITableViewCell 中的缩进 contentView 而不是 textLabel

UITableViewCell 标签不需要的缩进

缩进不适用于自定义 UITableViewCell

UITableViewCell 的图像不缩进

UITableViewCell 自定义缩进宽度

Dreamweaver:自动缩进 JavaScript 代码