- 之前为了与设计人员设计的字体相匹配,导入了一个自定义的字体库,然后觉得打包后包比较大,所以要删除这些自定义字体,但是项目中所有的字体都是使用自定义的,要是挨个去替换所花时间也是够够的了,还可能有漏网之鱼,但是使用下面的方法就可以进行批量替换。
1. 批量替换字体
// 定义一个UIFont的分类,然后让所有文件都引用这个分类
#import <UIKit/UIKit.h>
@interface UIFont (Custom)
@end
- 重写在项目中设置字体的方法
#import "UIFont+Custom.h"
@implementation UIFont (Custom)
// 如果项目中都是使用下面的方法定义的字体,那就重写这个方法
// 此处可以根据自己项目来决定重写哪个方法
+ (nullable UIFont *)fontWithName:(NSString *)fontName size:(CGFloat)fontSize
{
// 返回系统字体
return [UIFont systemFontOfSize:fontSize];
}
@end
- 如果项目中之前都是使用的系统字体,要替换为自定义字体,那么重写下面的方法,
+ (UIFont *)systemFontOfSize:(CGFloat)fontSize
{
return [UIFont fontWithName:@"此处为自定义的字体名称" size:fontSize];
}
2. 删除自定义的字体
删除info.plist中的字段
Fonts provided by application
然后删除字体库文件,批量替换自定义字体(见上面的方法)。
但是在运行后发现直接崩溃,此时怀疑项目中还有地方引用着字体,xcode中搜索项目关键字没发现哪里有这个字体的名字。后来使用终端命令:
grep -r --color=auto "HiraginoSansGB-W3" /Users/hp/Desktop/testAPP
可以寻找到包含这个字符串的地方,并且高亮显示,在很多xib文件中使用了自定义的字体。知道哪里引用了就好办,把xib中使用自定义字体的地方都换成系统字体,运行,没问题。
网友评论