iOSiOS

iOS 批量修改xib里的控件颜色

2022-03-30  本文已影响0人  可bing

项目有个需求,更换app的主题色,纯代码写的颜色倒还好,可通过手动查找修改或通过xcode全局搜索批量替换,可是xib文件里面的颜色怎么办,一是你不知道哪些xib文件有指定的颜色,二是涉及到的文件可能会很多。所以这里就介绍终端grep 和 sed 命令。

准备两个view
TestView1.xib:设置backgroundColor为System Pink Color



TestView2.xib:添加一个UIButton,设置按钮的titleColor为System Pink Color


为了方便查看,再给TestView2.xib设置一个背景色#7DD0C4


看下运行效果


再看下上面三个颜色在xml里表现形式
右键xib文件 -> Open As -> Source Code


TestView1.xib

咱们来看下这个按钮的xml代码,
backgroundColor的表现形式是red="0.12941176469999999" green="0.61960784310000006" blue="1" alpha="1" colorSpace="calibratedRGB",这是一个RGBA的写法。
titleColorsystemColor="systemPinkColor",这是系统提供的一个颜色,
假如要把titleColor改成0x036E00这个颜色值,先把它转换成RGBA格式:red="0.011764705882352941" green="0.43137254901960786" blue="0.0" alpha="1"

递归查找项目中所有systemColor="systemPinkColor"字符串
打开终端,cd到项目根目录,输入以下命令:

grep -rl systemColor=\"systemPinkColor\" . 

输出结果:

./test1/TestView1.xib
./test1/TestView2.xib

输入以下命令进行颜色替换:

sed -i "" "s/systemColor=\"systemPinkColor\"/red=\"0.011764705882352941\"\ green=\"0.43137254901960786\"\ blue=\"0.0\"\  alpha=\"1\"\ colorSpace=\"calibratedRGB\"/g" `grep -rl grep -rl systemColor=\"systemPinkColor\" . `

能看到xml里的颜色属性值变了


再看下运行效果



这两个不同文件的指定颜色都已修改。

该方法同样也可适用于修改xib里面的其他值。

上一篇下一篇

猜你喜欢

热点阅读