话不多说 直接贴代码
写一个UIFont的分类方法即可:
#import "UIFont+FontFit.h"
//按照6s大小来适配
#define p [UIScreen mainScreen].bounds.size.width / 375.0
@implementation UIFont (FontFit)
+ (void)load {
// 获取替换后的类方法
Method newMethod = class_getClassMethod([self class], @selector(adjustFont:));
// 获取替换前的类方法
Method method = class_getClassMethod([self class], @selector(systemFontOfSize:));
// 然后交换类方法,交换两个方法的IMP指针,(IMP代表了方法的具体的实现)
method_exchangeImplementations(newMethod, method);
}
//注意:在调用此方法时, 方法的指针已经交换:
+ (UIFont *)adjustFont:(CGFloat)fontSize {
if (p < 1) {//5s
fontSize = fontSize - 2;
}
else if (p==1) {//6s
//fontSize = fontSize
} else if (p>1) {//6p
fontSize = fontSize + 2;
}
UIFont *newFont = nil;
newFont = [UIFont adjustFont:fontSize];
return newFont;
}
//此方法只适应于使用了+ (UIFont *)systemFontOfSize:(CGFloat)fontSize 方法