在 iOS 11 下避免 UITableViewCell 的额外前导边距

Avoid extra leading margin for UITableViewCell under iOS 11

所有在 iOS11 (Xcode 9) 下编译的自定义 UITableViewCells 都获得了额外的前导边距,但在 iOS10 (Xcode 8) 下没有).请看图片。

iOS10,用Xcode8

编译

iOS11,用Xcode9

编译

如何为 iOS 11 的设备也获得 iOS 10 的行为。

我能够使用 UITableViewCell with autolayout left margin different on iPhone and iPad 的答案解决这个问题。在 table 视图单元及其包含的内容视图上设置“保留超级视图边距”解决了 iOS 10 和 iOS 11 中渲染之间的不一致。

另一个解决方法,在相反的方向(即具有与 iOS 10 中相同的行为),将在单元格和单元格的内容视图中将 preservesSuperviewLayoutMargins 设置为 false .例如,在你的 UITableViewCell 子类中:

override func awakeFromNib() {
    super.awakeFromNib()

    preservesSuperviewLayoutMargins = false
    contentView.preservesSuperviewLayoutMargins = false
}

这样您就可以恢复 iOS 10 种行为。