首页 > 解决方案 > 为什么没有状态栏的新 iPad 上的 safeAreaInsets 和 safeAreaLayoutGuide 看起来不对?

问题描述

如果我创建一个新的单视图项目并将以下代码添加到 ViewController.m

-(void)viewWillLayoutSubviews {
    [super viewWillLayoutSubviews];
    UIWindow *window = UIApplication.sharedApplication.windows[0];
    NSLog(@"%@, %@", NSStringFromUIEdgeInsets(window.safeAreaInsets), NSStringFromCGRect([[window safeAreaLayoutGuide] layoutFrame]));
}

我在新的 iPad Pro(12.9 英寸)(第 3 代)模拟器上得到以下结果。

带状态栏:{24, 0, 20, 0}, {{0, 24}, {1024, 1322}}

没有状态栏:{0, 0, 20, 0}, {{0, 0}, {1024, 1346}}

为什么在没有状态栏的情况下顶部插图为 0 或为什么框架 y 值为 0?这些值不应该像底部插图那样等于 20 吗?

UIStatusBarHidden=YES我通过设置和UIViewControllerBasedStatusBarAppearance=NO在 info.plist 中删除状态栏。我在 iPhone 上得到的结果总是正确地解释了弯曲的边缘。

标签: iosobjective-cipad

解决方案


推荐阅读