内容简介:WRNavigationBar 1.2.0版本在iPhone XS Max、iPhone XR上会出现导航栏高度异常的问题。以下代码只判断了iPhone X设备,所以在真机环境下iPhone XR、iPhone XS、iPhone XS Max会出现导航栏高度异常的问题,但作者在模拟器设备时对设备宽高做了判断,因此模拟器下iPhone XS是正常的。这里是将作者的根据设备判断改为根据状态栏高度判断,目前刘海屏状态栏高度都是44。
WRNavigationBar 1.2.0版本在iPhone XS Max、iPhone XR上会出现导航栏高度异常的问题。
导航栏异常的原因
以下代码只判断了iPhone X设备,所以在真机环境下iPhone XR、iPhone XS、iPhone XS Max会出现导航栏高度异常的问题,但作者在模拟器设备时对设备宽高做了判断,因此模拟器下iPhone XS是正常的。
+ (BOOL)isIphoneX {
struct utsname systemInfo;
uname(&systemInfo);
NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSASCIIStringEncoding];
if ([platform isEqualToString:@"i386"] || [platform isEqualToString:@"x86_64"]) {
// judgment by height when in simulators
return (CGSizeEqualToSize([UIScreen mainScreen].bounds.size, CGSizeMake(375, 812)) ||
CGSizeEqualToSize([UIScreen mainScreen].bounds.size, CGSizeMake(812, 375)));
}
BOOL isIPhoneX = [platform isEqualToString:@"iPhone10,3"] || [platform isEqualToString:@"iPhone10,6"];
return isIPhoneX;
}
解决办法
1、找到WRNavigationBar.m文件,打开。
2、找到isIphoneX方法
+ (BOOL)isIphoneX {
struct utsname systemInfo;
uname(&systemInfo);
NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSASCIIStringEncoding];
if ([platform isEqualToString:@"i386"] || [platform isEqualToString:@"x86_64"]) {
// judgment by height when in simulators
return (CGSizeEqualToSize([UIScreen mainScreen].bounds.size, CGSizeMake(375, 812)) ||
CGSizeEqualToSize([UIScreen mainScreen].bounds.size, CGSizeMake(812, 375)));
}
BOOL isIPhoneX = [platform isEqualToString:@"iPhone10,3"] || [platform isEqualToString:@"iPhone10,6"];
return isIPhoneX;
}
3、将其修改为以下内容,直接复制即可
+ (BOOL)isIphoneX {
if ([UIApplication sharedApplication].statusBarFrame.size.height == 44) {
return YES;
}
else {
return NO;
}
}
这里是将作者的根据设备判断改为根据状态栏高度判断,目前刘海屏状态栏高度都是44。
4、这里有个注意点
Q: 将isIphoneX方法的实现修改后,下面的判断无法返回正确的数值
+ (CGFloat)navBarBottom {
return [self isIphoneX] ? 88 : 64;
}
+ (CGFloat)tabBarHeight {
return [self isIphoneX] ? 83 : 49;
}
A: 将判断改写即可
+ (CGFloat)navBarBottom {
if ([self isIphoneX]) {
return 88;
}
else {
return 64;
}
}
+ (CGFloat)tabBarHeight {
if ([self isIphoneX]) {
return 83;
}
else {
return 49;
}
}
如果没出现问题,请无视,理论上也不应该出现问题的。
Q: 修改代码后,运行app导航栏高度还是错误的,且clean项目还是无效
A: 使用cleanmymac将Xcode里的数据清除,重新编译运行app,导航栏就正常了。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 认知的高度 = 人生的高度
- 父div高度不能自适应子div高度的解决方案
- html – 没有固定高度的滚动条/带滚动条的动态高度
- Android XML灵活布局之 EditText实现自适应高度同时限制最小和最大高度
- iOS初级开发学习笔记:一个页面中自动计算cell的高度来自适应tableView的高度
- RN 踩坑:内容区域高度
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
QBasic语言程序设计教程(第2版习题解答)
刘瑞新、丁爱萍 / 电子工业出版社 / 1999-6-1 / 13.00
本书是《QBasic语言程序设计教程》(第二版)一书的配套教材、本书第一部分以概要的形式,对全书进行了总结,以便学生复习。在第二部分中,对《QBasic语言程序设计教程》(第二版)中的习题做了详尽的分析与解答。 本书也可作为QBasic语言的习题研单独使用。一起来看看 《QBasic语言程序设计教程(第2版习题解答)》 这本书的介绍吧!