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

时间:2018-01-21 12:56:24

标签: ios objective-c ios11

我目前正在开发使用Objective-C和iOS 8.x制作的应用程序的新版本

布局有两个问题:

  • 导航栏顶部显示背景颜色均匀的条形图,隐藏了导航图像的一半内容

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

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

在iphone6上观察到这个问题。或iPhone X也会出现此问题,但顶栏上方有一个空格:

截图iPhone 6:https://i.imgur.com/nSMc4oL.png

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

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

1 个答案:

答案 0 :(得分:1)

在iOS 11中,导航栏高度增加。这是支持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);

}