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);
}
我目前正在开发使用 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);
}