由于之前在做项目的时候根据需求只单独做了iPhone版,所以适配做的很烂。只是用比例适配适配了从iPhone4到iPhone6机型的页面,文字适配压根就没做,12月底老板突然说我们的应用怎么不能在iPad上跑,我当时就无语了,您老之前从来没说过啊。没办法了,整个项目全部要重新做适配,不过幸好我这个项目是纯代码,还有得玩。既然要做,这次就做的彻底一点。我放弃了iPhone5以下机型的适配,直接从iPhone5开始适配,到iPhoneh7P,再到iPad。废话不多说,先贴一下代码.
.h
#import@interface UIFont (KaeExtention)
+ (nullable UIFont *)kaeFont:(CGFloat)font withStyle:(int)type withFamilyName:(nullable NSString *)fontName;
@end
.m
#import "UIFont+KaeExtention.h"
@implementation UIFont (KaeExtention)
+ (nullable UIFont *)kaeFont:(CGFloat)font withStyle:(int)type withFamilyName:(nullable NSString *)fontName
{
CGFloat sizeScale;
if (isPad)
{
sizeScale = 1.3;
}else
{
if (DEF_SCREEN_WIDTH <= 320)
{
sizeScale = 1;
}else if(DEF_SCREEN_WIDTH > 320&&DEF_SCREEN_WIDTH <= 375)
{
sizeScale = 1.1;
}else
{
sizeScale = 1.2;
}
}
if (fontName != nil)
{
return [UIFont fontWithName:fontName size:sizeScale*font];
}else
{
if (type == 0)
{
return [UIFont systemFontOfSize:sizeScale*font];
}else
{
return [UIFont boldSystemFontOfSize:sizeScale*font];
}
}
}
@end
因为时间仓促,我这里只是写了一个简单的分类,具体到复杂的文字适配还没有去完善,不过对于我的项目是够用了,因为我的项目里只涉及到系统字体大小和粗细的适配。如果是系统外导入的字体要适配粗细大小的话这个分类需要作些许调整,另外貌似系统外导入的字体粗细不能直接设置,可能需要重绘,大家也可以尝试一下,这里主要是给众多和我一样的菜鸟一些文字适配的思路,如果哪里说的不对还望多多指教。