这个是看的传智播客放到百度传课上的视频上的思路,如果有兴趣,可以直接看视频
只是个简单的例子,为了快速,采用了storyboard创建控件等。
storyboard.png图片资源文件夹和命名方式是这样子的:
resource.png注意: 文件夹颜色为蓝色,在导入skin文件时,第二行勾选第二个Create folder references,这样子引入的文件夹,文件路径为绝对路径。
skin.png文件夹下的SkinColors.plist文件中存放的是不同模式下的颜色RGBA色值(便于iOS、安卓等均可直接使用)
具体使用蓝色文件夹下的文件时,需要拼接绝对路径:
[NSString stringWithFormat:@"skin/%@/%@.jpg", _skinName, imageName];
[NSString stringWithFormat:@"skin/%@/SkinColors.plist", _skinName];
另外,若图片格式不为png且被放在了Assets.xcassets外时,使用时需要带上相应格式(如.jpg)
工程中抽取了一个工具类CaiSkinTool用于管理皮肤的变化
一般优化代码有两种方式:
- 抽取父类:对于界面内容多变的情况不太适用
- 工具类:对于界面内容多变的情况非常适用
需要注意的是: 当有tabbar管理控制器时,最外层被tabbar引用的控制器,换肤代码不应在viewDidLoad中,因为在控制器的生命周期中,viewDidLoad中代码仅执行一次,但此控制器并不会被释放,不能及时更新最新皮肤,因此应将换肤操作代码放在viewWillAppear中。
网友评论