不要在 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如下图所示
我有一个 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如下图所示