前言
事情是这样的,由于ios每个版本系统字体大小都会有细微差别,所以在我来公司之前前同事找了一种字体名是"STHeitiSC-Light"字体来代替以保证字体大小相同,但是现在UI觉得还是系统字体好要改回来,但是当时没有作宏定义...
选择
最开始想到的当然是一个个改了,但是我一搜
实在太多了,pass...
由于要替换的是这样的
[UIFont fontWithName:STHeitiSC_Light size:12]
要替换成这样
[UIFont systemFontOfSize:(12) weight:UIFontWeightRegular]
所以只能用正则的方式
然后想到了Xcode自带的查找和替换功能
动手
1.oc中看了下有这两种
[UIFont fontWithName:STHeitiSC_Light size:12.0] //直接用数字
[UIFont fontWithName:STHeitiSC_Light size:Font_Title] //用宏定义
正则\[UIFont fontWithName:STHeitiSC_Light size:(.*?)\]
问号在正则中表示非贪婪模式,指匹配到第一个就停止
防止[optionDic setObject:[UIFont fontWithName:STHeitiSC_Light size:Font_Option] forKey:NSFontAttributeName];
这样的语句匹配错误。
替换代码
[UIFont systemFontOfSize:($1) weight:UIFontWeightRegular]
2.swift中也有两种写法
UIFont(name: STHeitiSC_Light, size: 16)
UIFont.init(name: STHeitiSC_Light, size: 16)
因为没有宏定义的情况,正则可以是这样
UIFont\(name: STHeitiSC_Light, size: ([0-9.]*)\)
和UIFont.init\(name: STHeitiSC_Light, size: ([0-9.]*)\)
替换代码
UIFont.systemFont(ofSize: $1)
这里有个问题,因为之前用字体名,所以可能会出现这样的情况
因为也比较多就用这个正则再替换下
UIFont.systemFont\(ofSize: ([0-9.]*)\)!
这样就完事儿啦!
总结
这里只是把我们工程中修改的过程写下来,具体怎么替换需要根据各自工程里的写法修改,我觉得这个功能还是很强大的,利用得好可以省很多事儿!
觉得有用就点个赞吧:)