美文网首页iOS点点滴滴iOS Developer
皮肤(主题)更换实现

皮肤(主题)更换实现

作者: 稻_草_人 | 来源:发表于2017-08-01 10:23 被阅读0次

引:之前一个项目用到过皮肤切换,自己封装了下,封装的不是很好用,现在这个项目又要用到,就想着看看别个大牛的封装想看点这里,借鉴了大牛的一些思路,写了个微型版的,还是很实用。(主要是大牛的源码有些不太看的懂,怕后期不好维护,逃。。。。)

正文:

1、实现思路:用一个SkinManger单例类管理皮肤的切换、添加和获取当前皮肤等操作。并发送一个全局的皮肤更换通知。用一个SkinBinderManger单例类和NSOject的类别实现对相应皮肤类的链接,并接收通知,更换皮肤。当前所有的皮肤类都是以一个抽象类BaseSkin为基类进行创建、和SkinManger与SkinBinderManger关联。

2、用法:

 //程序入口进行皮肤管理器初始化
 NSArray *skinNames = @[@"RedSkin",@"BlueSkin",@"BlankSkin"];
 for (NSString *skinName in skinNames) {
     [[SkinManger sharedInstence] addSkinWithName:skinName];
 }

//对需要改变皮肤的控件绑定皮肤
//label
[self.textLabel bindSkinCallBack:^(id sender, BaseSkin *skin) {
     UILabel *label = sender;
     label.textColor = skin.textColor;
}];
//imageView
[self.textImg bindSkinCallBack:^(id sender, BaseSkin *skin) {
      UIImageView *imgView = sender;
      imgView.image = [skin getImgNameWithIdentifier:@"tempImg"];
}];
//view
[self.textView bindSkinCallBack:^(id sender, BaseSkin *skin) {
     UIView *view = sender;
     view.backgroundColor = skin.bgColor;
 }];

//设置当前皮肤
[[SkinManger sharedInstence] setCurrentSkinWithName:@"BlankSkin"];

//改变当前皮肤
[[SkinManger sharedInstence] setCurrentSkinWithName:@"BlankSkin"];

3、注意
(1)、使用getImgNameWithIdentifier:方法时,需要将各种皮肤图片名称进行处理,以图片名称_类名称的形式存放在Xcode 工程文件的Assets.xcassets文件里面(将图片名称进行修改),使用时直接使用修改前的图片名称。
(2)、第一次设置当前模型时,即调用setCurrentSkinWithName方法时,要保证所有的要改变皮肤的控件皮肤绑定成功。

4、最后:
demo

相关文章

  • 皮肤(主题)更换实现

    引:之前一个项目用到过皮肤切换,自己封装了下,封装的不是很好用,现在这个项目又要用到,就想着看看别个大牛的封装想看...

  • iOS动态更换App图标

    应用场景 起跳版本 实现方案 官方文档 应用场景 各类皮肤主题切换,附带App图标一块更换。 图标促销提示,如某宝...

  • 更换主题

    将主题文件夹下载并解压到/hexo/themes文件夹下 修改_config.yml中的theme参数为对应的文件...

  • 更换主题

    https://blog.csdn.net/ksws0292756/article/details/7995315...

  • "重启"Activity中的一点小毛病

    我们在通过setTheme() 更换主题(实现"夜间模式"等等..)的时候,有时需要"重启"Activity 比较...

  • iOS 实现后台服务器控制更换主题

    作用:在不同日子显示不同风格界面;老板要改已经完成的app的主题颜色;这里不是实现本地更换主题; 1、创建主题管理...

  • Android 实现切换主题皮肤功能

    简介 正文 首先我们先来做个简单的一键切换主题的功能。查看代码如下: 但是这种情况下呢,一键切换皮肤,app需要退...

  • vue实现换主题\皮肤功能

    现在的app和pc网站做的越来越花哨,但是有时候用户并不喜欢你给他挑选好的主题颜色,这个时候就需要一个换皮肤的功能...

  • 如何实现 Vue 换肤/更换主题呢

    前言 在产品的更新迭代的过程中, 不光是完善产品的过程, 更是满足用户各种需求以便更好的提高用户体验的过程。其中换...

  • css/less 实现动态更换主题色

    固定主题色的切换 思路:访问网页 => js读取缓存(判断是否有主题色的值,没有就默认皮肤,有则使用指定皮肤) =...

网友评论

    本文标题:皮肤(主题)更换实现

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