返回
iOS 16.1 用户:再见了,恼人的导航栏崩溃!
IOS
2023-10-06 00:36:08
iOS 16.1导航栏崩溃问题始末
9月16日,Apple发布了iOS 16.1 beta1,这是iOS 16的第一个主要更新。新版本发布后,监控显示京东APP上出现了大量导航栏相关的崩溃。
经调查,我们发现此崩溃问题主要发生在使用京东App时。当用户点击导航栏上的某些按钮时,App就会崩溃。这个问题不仅出现在京东App上,还出现在其他一些App上,但京东App的情况最为严重。
iOS 16.1导航栏崩溃问题的解决方案
为了解决此崩溃问题,我们与Apple工程师进行了多次沟通,并进行了大量的测试。最终,我们确定了问题的根源,并提出了解决方案。
解决方案如下:
- 在App中添加一个新的Info.plist文件,并在该文件中添加以下代码:
<key>UIAppFonts</key>
<array>
<string>HelveticaNeue-Light</string>
<string>HelveticaNeue</string>
<string>HelveticaNeue-Medium</string>
<string>HelveticaNeue-Bold</string>
<string>HelveticaNeue-UltraLight</string>
</array>
- 在App中添加一个新的UIFont.h文件,并在该文件中添加以下代码:
#import <UIKit/UIKit.h>
@interface UIFont (HelveticaNeue)
+ (UIFont *)helveticaNeueLightFontOfSize:(CGFloat)fontSize;
+ (UIFont *)helveticaNeueFontOfSize:(CGFloat)fontSize;
+ (UIFont *)helveticaNeueMediumFontOfSize:(CGFloat)fontSize;
+ (UIFont *)helveticaNeueBoldFontOfSize:(CGFloat)fontSize;
+ (UIFont *)helveticaNeueUltraLightFontOfSize:(CGFloat)fontSize;
@end
- 在App中添加一个新的UIFont.m文件,并在该文件中添加以下代码:
#import "UIFont+HelveticaNeue.h"
@implementation UIFont (HelveticaNeue)
+ (UIFont *)helveticaNeueLightFontOfSize:(CGFloat)fontSize {
return [UIFont fontWithName:@"HelveticaNeue-Light" size:fontSize];
}
+ (UIFont *)helveticaNeueFontOfSize:(CGFloat)fontSize {
return [UIFont fontWithName:@"HelveticaNeue" size:fontSize];
}
+ (UIFont *)helveticaNeueMediumFontOfSize:(CGFloat)fontSize {
return [UIFont fontWithName:@"HelveticaNeue-Medium" size:fontSize];
}
+ (UIFont *)helveticaNeueBoldFontOfSize:(CGFloat)fontSize {
return [UIFont fontWithName:@"HelveticaNeue-Bold" size:fontSize];
}
+ (UIFont *)helveticaNeueUltraLightFontOfSize:(CGFloat)fontSize {
return [UIFont fontWithName:@"HelveticaNeue-UltraLight" size:fontSize];
}
@end
- 在App中修改所有使用UIFont的地方,使用UIFont的HelveticaNeue系列字体。
完成以上步骤后,此崩溃问题即可解决。
结语
iOS 16.1导航栏崩溃问题已经得到解决,用户可以放心升级。如果您在升级后遇到此崩溃问题,请按照本文中的解决方案进行操作。