不要在 iPhone X 上为第一个 UITableViewCell 使用 SafeArea 插图

Don't use SafeArea inset on iPhone X for first UITableViewCell

我有一个 UITableView,第一行用作一种带有全出血背景图像和其他元素的 header 单元格。对于这个单元格,我不想使用 SafeArea,我希望 UIView 一直扩展到屏幕边缘。目前我得到这个:

我已尝试为单元格手动设置:

if (@available(iOS 11.0, *)) {

    headerCell.insetsLayoutMarginsFromSafeArea = NO;
    headerCell.layoutMargins = UIEdgeInsetsMake(10, 0, 10, 0);
    UIEdgeInsets i = headerCell.layoutMargins;
    NSLog(@"Left: %f", i.left);
}

遗憾的是这不起作用。

这是它应该是什么样子的模型,第一个单元格内容不受安全区域影响:

有什么方法可以只为第一个单元格做我想做的事情吗?

我发现我需要取消选中 UITableView 上的 Content View Insets To Safe Area 复选框。

这样做解决了问题!

将 Size Inspector 下的“Content insets”标记为“Never”对我有用。

在代码中,可以通过

完成
        tableView.insetsContentViewsToSafeArea = false

只需转到 tableview 大小检查器并查找 Content Insets 默认情况下它将设置为自动更改为 Never如下图所示