iOS 11 导航栏和屏幕尺寸的布局更改

layout changes on iOS 11 navigation bar and screen size

我目前正在开发使用 Objective-C 和 iOS 8.x

制作的应用程序的新版本

我有两个布局问题:

应用程序的最新更新是 iOS 9.3,因此它与 iOS 10 或 11 中的更改有关。

在 iphone6 上观察到该问题。或 iPhone X 也观察到此问题,但顶部栏上方有一个 space:

截图iPhone6:https://i.imgur.com/nSMc4oL.png

截图iPhoneX:https://i.imgur.com/7nanJMn.png

我尝试将 self.navigationController.navigationBar.prefersLargeTitles 设置为 true,但这让事情变得更糟:顶部栏仍然存在,并且添加了另一个大栏。

在iOS11、导航栏高度增加。这是支持 iPhone X 设备的一种方式。

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);

}