前言
事情是這樣的,由于ios每個(gè)版本系統(tǒng)字體大小都會(huì)有細(xì)微差別,所以在我來公司之前前同事找了一種字體名是"STHeitiSC-Light"字體來代替以保證字體大小相同,但是現(xiàn)在UI覺得還是系統(tǒng)字體好要改回來,但是當(dāng)時(shí)沒有作宏定義...
選擇
最開始想到的當(dāng)然是一個(gè)個(gè)改了,但是我一搜

實(shí)在太多了,pass...
由于要替換的是這樣的
[UIFont fontWithName:STHeitiSC_Light size:12]
要替換成這樣
[UIFont systemFontOfSize:(12) weight:UIFontWeightRegular]
所以只能用正則的方式
然后想到了Xcode自帶的查找和替換功能

動(dòng)手
1.oc中看了下有這兩種
[UIFont fontWithName:STHeitiSC_Light size:12.0] //直接用數(shù)字
[UIFont fontWithName:STHeitiSC_Light size:Font_Title] //用宏定義
正則\[UIFont fontWithName:STHeitiSC_Light size:(.*?)\]
問號(hào)在正則中表示非貪婪模式,指匹配到第一個(gè)就停止
防止[optionDic setObject:[UIFont fontWithName:STHeitiSC_Light size:Font_Option] forKey:NSFontAttributeName];這樣的語句匹配錯(cuò)誤。
替換代碼
[UIFont systemFontOfSize:($1) weight:UIFontWeightRegular]
2.swift中也有兩種寫法
UIFont(name: STHeitiSC_Light, size: 16)
UIFont.init(name: STHeitiSC_Light, size: 16)
因?yàn)闆]有宏定義的情況,正則可以是這樣
UIFont\(name: STHeitiSC_Light, size: ([0-9.]*)\)和UIFont.init\(name: STHeitiSC_Light, size: ([0-9.]*)\)
替換代碼
UIFont.systemFont(ofSize: $1)
這里有個(gè)問題,因?yàn)橹坝米煮w名,所以可能會(huì)出現(xiàn)這樣的情況

因?yàn)橐脖容^多就用這個(gè)正則再替換下
UIFont.systemFont\(ofSize: ([0-9.]*)\)!
這樣就完事兒啦!
總結(jié)
這里只是把我們工程中修改的過程寫下來,具體怎么替換需要根據(jù)各自工程里的寫法修改,我覺得這個(gè)功能還是很強(qiáng)大的,利用得好可以省很多事兒!
覺得有用就點(diǎn)個(gè)贊吧:)