在 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 种行为。
所有在 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 种行为。