内容简介: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 踩坑:内容区域高度
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
An Introduction to Probability Theory and Its Applications
William Feller / Wiley / 1991-1-1 / USD 120.00
Major changes in this edition include the substitution of probabilistic arguments for combinatorial artifices, and the addition of new sections on branching processes, Markov chains, and the De Moivre......一起来看看 《An Introduction to Probability Theory and Its Applications》 这本书的介绍吧!