换肤

这个是看的传智播客放到百度传课上的视频上的思路,如果有兴趣,可以直接看视频

只是个简单的例子,为了快速,采用了storyboard创建控件等。

换肤_第1张图片
storyboard.png

图片资源文件夹和命名方式是这样子的:

换肤_第2张图片
resource.png

注意: 文件夹颜色为蓝色,在导入skin文件时,第二行勾选第二个Create folder references,这样子引入的文件夹,文件路径为绝对路径。

换肤_第3张图片
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中。

请看代码,或者看源视频

你可能感兴趣的:(换肤)