一个轻量级的iOS皮肤切换方案(内附Demo)
点击上方“程序员大咖”,选择“置顶公众号”
关键时刻,第一时间送达!


项目代码放在https://github.com/SlashDevelopers/SDTheme,这个方案是从实际项目中剥离而来的,大家使用中遇到什么问题或者有什么赐教欢迎随时留言~

Demo运行效果图
Demo做的有点丑,大家多忍耐一下
使用方法非常简单:
初始化:
[[SDThemeManager sharedInstance] setupThemeNameArray:@[@"SDTheme-White", @"SDTheme-Black"]];
SDTheme-White和SDTheme-Black是资源主题Bundle的名称,下面会说到资源Bundle的引入方法。
切换主题:
[[SDThemeManager sharedInstance] changeTheme:@"SDTheme-Black"];
具体设置皮肤:
具体调用非常简单,比如需要换肤的视图控件原本是调用backgroundColor设置颜色,只需要换成调用扩展方法theme_backgroundColor即可,例如:
self.view.theme_backgroundColor = @"block_bg";
self.textField.theme_textColor = @"text_h1";
self.image.theme_image = @"icon_face";
富文本需要用SDThemeForegroundColorAttributeName替换NSForegroundColorAttributeName,例如:
navBar.theme_titleTextAttributes = @{SDThemeForegroundColorAttributeName:@"text_h1"};
另外有些常用的属性在XIB等可视化视图也可以直接设置,例如:

如果直接设置属性的方式不满足需求,还可以自己监听通知SDThemeChangedNotification,收到通知之后自行做颜色图标等切换。
资源管理
颜色字符串和图片是放在单独的Bundle里面进行管理的,所以刚开始要新建自己的主题Bundle.
Bundle中 新建ColorsMap.plist和Images.xcassets
图片:就放在相应的主题bundle中的Images.xcassets管理,图片在不同主题下名字要保证一致。
颜色字符串:颜色字符串可以参考一下Demo中的文件,首先要有一个大分类,例如Demo中的
block、text、line(跟随自己需要分类就好,这里的分类我是扒竞品富途牛牛的
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
