如何使用Objective C iOS从iPhone X中的表视图顶部删除多余空间

Ana*_*tam 2 iphone objective-c uitableview ios iphone-x

我已经在Objective C中开发了一个应用程序,它在所有iPhone手机上运行良好.但是当我在iPhone X Simulator中运行这个应用程序时,我不知道如何在UITableView的顶部获得一些额外的空间(大约20-22像素).我尝试了所有这些解决方案,但以下都没有帮助我:

self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)];

self.edgesForExtendedLayout = UIRectEdgeNone;

[tblProducts setSectionHeaderHeight:0];

self.automaticallyAdjustsScrollViewInsets = NO;

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return CGFLOAT_MIN;
}

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return CGFLOAT_MIN;
}
Run Code Online (Sandbox Code Playgroud)

我知道这可以通过设置我的表视图contentInset来实现:

tblProducts.contentInset = UIEdgeInsetsMake(-30, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)

有没有其他解决方案来解决iPhone X的这个问题?

我在ViewDidLoad中查看了我的表视图框,它是(0,64,WIDTH,HEIGHT),状态栏有问题吗?

请建议我.先感谢您!

Gle*_*enn 6

您可以尝试将contentInsetAdjustmentBehavior属性设置为Never.

在Swift中,我有这个UICollectionView:

if #available(iOS 11.0, *) {
    collectionView.contentInsetAdjustmentBehavior = .never
}
Run Code Online (Sandbox Code Playgroud)

在Objective-C中,同样适用于UITableView,设置如下:

if (@available(iOS 11.0, *)) {
    [_tableView setContentInsetAdjustmentBehavior: UIScrollViewContentInsetAdjustmentNever];
}
Run Code Online (Sandbox Code Playgroud)


Dev*_*del 6

如果有人正在寻找故事板的答案,那么在故事板中选择你的UITableView,只需将内容更改为永不改变,如下面的链接所示

在此输入图像描述