如何使用Objective C iOS在iPhone X上从表视图的顶部删除额外空间

3

我已经用Objective C开发了一个应用程序,在所有的iPhone手机上都能够正常工作。但是当我在iPhone X模拟器上运行此应用程序时,我不知道为什么在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;
}

我知道可以通过设置表视图的contentInset来实现这一点,例如:

tblProducts.contentInset = UIEdgeInsetsMake(-30, 0, 0, 0);

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

我在ViewDidLoad中检查了我的tableView框架,它是(0,64,WIDTH,HEIGHT),状态栏是否有问题?

请给我建议。谢谢您提前!


你是否设置了 iPhone X 的适当启动屏幕? - iPatel
@iPatel 不,我还没有设置 iPhone X 的启动画面。 - Anand Gautam
请先设置为1125像素 × 2436像素。 - iPatel
好的,完成了 @iPatel - Anand Gautam
3个回答

8
您可以尝试将contentInsetAdjustmentBehavior属性设置为Never
在Swift中,我在UICollectionView中有这个内容:
if #available(iOS 11.0, *) {
    collectionView.contentInsetAdjustmentBehavior = .never
}

在Objective-C中,UITableView也是一样的,设置方式如下:
if (@available(iOS 11.0, *)) {
    [_tableView setContentInsetAdjustmentBehavior: UIScrollViewContentInsetAdjustmentNever];
}

6
如果有人正在寻找Storyboard的答案,则只需在Storyboard中选择您的UITableView并将内容插图更改为never,就像下面链接中所示。

enter image description here


@HarshadPatel - 很高兴能帮到你。欢迎。 - Devang Tandel

0

你可以将tableview的样式设置为plain,这将删除额外的空间,或者你可以将一个属性设置为你的Viewcontroller:

self.extendedLayoutIncludesOpaqueBars = true


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接