如果給一個包體給你,里面有設置好的一些icon,但是你發現需要換全套icon,正常的思維是讓美術重新出一套圖

那其實我們可以用shell腳本直接解決這個問題。接下來我們來學習怎么用Shell來替換所有icon,生成尺寸一樣的一套icon
第一步:
首先我們需要搞明白info.plist里面關于icon的設置項是怎么樣的,我們將與icon設置無關的都刪除掉:

可以看到與icon相關的設置分別有這幾項,由于層級關系,其實是這樣的三項:
CFBundleIcons:CFBundlePRimaryIcon:CFBundleIconFiles
CFBundleIconFiles
CFBundleIcons~ipad:CFBundlePrimaryIcon:CFBundleIconFiles
稍后我們會用一個數組將它存儲起來。
其實iOS就是用這個info設置表去搜尋包內的icon,但是搞明白這其中的關系我們就可以開始搞了~
第二步:
我們建立這樣的文件夾,并且按照其命名規范好,并且放置在config里面的待替換的icon需要512的尺寸

第三步:
我們對設置項目遍歷,并且用一個數組裝載它:

這一步是將這些設置項遍歷一遍,并且裝在在iconTempName這個數組內,這個時候,數組應該是如下,即所有設置項的結合

第四步:
判斷icon的有效性,總體的思路就是,有些設置項設置得不合法,例如沒有加.png后綴等等,并且需要添加一些@2x,~ipad的后綴,但是需要注意:
我們需要對原來的icon判斷是否存在這個@2x的才添加并不是統統都添加,用 if[ -f ] 這個命令即可

規范好icon命名之后我們用一個iconName來裝載,可以看到這個數組是規范的命令:

相對于前面那個就規范多了
第五步:
將這個規范的icon數組遍歷,并且取出其中表示的width和height,分別放在兩個一致的數組里面:

可以看到的是這樣的數組內容:

第六步:
到這里我們知道,其實分別:iconName數組,width數組,height數組都是“高度一致”的,我們新建兩個文件夾,一個是臨時的文件夾,裝的是我們將config里面
需要替換的資源Icon.png命名成iconName數組里面對應的icon,這個時候應該都是512尺寸,最后一步我們只要將這些512對應地替換成width和height數組對應的尺寸即可
因為是高度一致的,相當好綁定來遍歷:

最后我們就可以得到這樣的結果,如果想在原來的文件夾,可以將原來的icon刪除并且將這些直接導在icons即可。

新聞熱點
疑難解答