iOS 11导航栏和屏幕大小上的布局更改

iOS 11导航栏和屏幕大小上的布局更改,ios,objective-c,ios11,Ios,Objective C,Ios11,我目前正在开发一款新版本的应用程序,该应用程序采用Objective-C和iOS 8.x 我对布局有两个问题: 具有统一背景颜色的栏显示在我的导航栏顶部,隐藏了我的navigationitem的一半内容 屏幕底部会显示一个大的白色条 该应用程序的最新更新是iOS 9.3,因此它与iOS 10或11的变化有关 在iphone6上可以观察到这个问题。或iPhone X也观察到了此问题,但顶部栏上方有一个空间: iPhone 6屏幕截图: iPhone X屏幕截图: 我试图将self.naviga

我目前正在开发一款新版本的应用程序,该应用程序采用Objective-C和iOS 8.x

我对布局有两个问题:

  • 具有统一背景颜色的栏显示在我的导航栏顶部,隐藏了我的navigationitem的一半内容

  • 屏幕底部会显示一个大的白色条

该应用程序的最新更新是iOS 9.3,因此它与iOS 10或11的变化有关

在iphone6上可以观察到这个问题。或iPhone X也观察到了此问题,但顶部栏上方有一个空间:

iPhone 6屏幕截图:

iPhone X屏幕截图:


我试图将self.navigationController.navigationBar.prefersLargeTitles设置为
true
,但最糟糕的是:顶部的栏仍然存在,并且添加了另一个大栏

在iOS 11中,导航栏高度增加。这是支持iPhoneX设备的一种方法

if(@available(iOS 11,*))
{
   self.navigationController.navigationBar.prefersLargeTitles = false;
   self.navigationController.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeNever;
}

CGFloat statusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;
NSLog(@"Status bar height:%f",statusBarHeight);

double CurrentDevicescreenHeight = [[UIScreen mainScreen] bounds].size.height;
NSLog(@"Current Device Height:%f",CurrentDevicescreenHeight);

if(CurrentDevicescreenHeight == 812) {

    CGFloat iPhoneXstatusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;
    NSLog(@"iPhone X Device:- Status bar height:%f",iPhoneXstatusBarHeight);

    float tophight  = self.navigationController.navigationBar.frame.size.height;
    NSLog(@"iPhone x device navigation bar height:%f",tophight);
    self.navigationController.navigationBar.frame = CGRectMake(0, 20, 320, 44);

}

这看起来像是你的应用程序添加的内容。视图调试器认为它是什么类型的?