XCode 6.3向tableviewcell添加边距

时间:2015-04-18 02:19:08

标签: ios xcode uitableview swift xcode6.3

XCode 6.3 / Swift 1.2是否为UITableViewCell的contentView添加了额外的边距?在更新之前,我有一个自定义的UIView,它在我的单元格中一直延伸到整个屏幕。例如:

enter image description here

现在,单元格中的所有内容似乎都有额外的边距,我不知道它们来自哪里。

enter image description here

请注意,这些视图的宽度在代码中不会以任何方式更改,并且右侧和左侧的约束如下:

enter image description here

另请注意,我使用的是tableView.separatorStyle = .None。我添加了这个事实,因为出于某种原因,我的tableView之一有默认分隔符,它似乎没有添加这些额外的边距。

有没有人知道他们是否在XCode 6.3中做了一些奇怪的改变?更新后直接发生此行为。

编辑: enter image description here

1 个答案:

答案 0 :(得分:19)

仔细查看尺寸检查器的此屏幕截图,了解主要约束:

enter image description here

了解"相对于保证金"检查?这是你的问题。如果边距发生变化,则左边缘会发生变化。 取消选中该菜单项,然后将常量更改为零。对尾随约束也这样做,你的问题就会结束。

现在让我们来解决更深层次的问题:改变了什么?你是绝对正确的,有些事情。我相信他们修复了一个错误,你陷入了修复。记录显示单元格preservesSuperviewLayoutMarginstrue,表格的边距为0,16,0,16。即使在iOS 8.2上也是如此,因此iOS 8.2 上的有效边距应为16.但它们是8,好像preservesSuperviewLayoutMarginsfalse。但是在iOS 8.3中,正确地遵循了这个设置 - 结果是你观察到了。

因此,解决问题的另一种方法是保留您的约束,但要将每个单元格preservesSuperviewLayoutMargins设置为false cellForRowAtIndexPath:。这同样适用于在两个系统中使结果相同。

编辑好消息:看起来这个变化在iOS 9中被还原了。因此,如果没有变化,你的手机在iOS 9中的外观与iOS 8.2及之前的相同。