iOS 批量修改xib里的控件颜色
项目有个需求,更换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的写法。
titleColor
是systemColor="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里面的其他值。