换肤

作者: CoderCurtis | 来源:发表于2017-05-16 18:03 被阅读27次

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

只是个简单的例子,为了快速,采用了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中。

请看代码,或者看源视频

相关文章

网友评论

      本文标题:换肤

      本文链接:https://www.haomeiwen.com/subject/zenlxxtx.html