LEETheme优雅的主题管理库
来源:互联网 发布:界面编程语言 编辑:程序博客网 时间:2024/05/22 14:45
http://www.jianshu.com/p/dc7ab3a3e8f8
前言
对于日间夜间模式切换 , 多种色调主题切换 , 这类的需求可以说在阅读社交类APP中屡见不鲜了 , 但如何能更方便的实现这一需求呢? 不要说给每个自定义的view神马的加个通知 然后在通知事件里设置各种属性的颜色图片等等 , NO , 那不是一个好的Coder该做的事 , 我们应该追求用最简单的方式去完成最繁琐的事 , 正是出于这些原因 , 我开发了这个主题管理库 今天开源出来分享给大家 -----LEETheme
LEETheme
什么是LEETheme ? 它是一个轻量级主题管理开源库 , 完美的适配系统版本差异 , 拥有良好的兼容性 , 任何对象都可以支持 , 优雅的使用方式 , 相比传统多主题处理方式而言 , LEETheme 只需一句代码 即可完成对象多样式的操作.
效果演示
使用方法
LEETheme 提供了两种设置方式 这里做一下简单的演示:
独立设置方式
独立设置方式是对某一对象属性进行单独的配置 , 例如下面的例子 , 对view对象添加背景颜色 其中传入了2个参数 (@"主题标签" , [该主题标签对应的color值])
self.view.lee_theme.LeeAddBackgroundColor(DAY , [UIColor whiteColor]).LeeAddBackgroundColor(NIGHT , [UIColor blackColor]);
增加换行后 格式更加清晰
self.view.lee_theme.LeeAddBackgroundColor(DAY , [UIColor whiteColor]).LeeAddBackgroundColor(NIGHT , [UIColor blackColor]);
标识符设置方式
标识符设置方式是通过添加不同主题的JSON配置信息再为某对象设置指定标识符来实现切换的 , 下面模拟个例子:
json的标准格式:
{ "color": { "identifier1(唯一标识符)": "十六进制颜色值", "identifier2": "#000000" }, "image": { "identifier3(唯一标识符)": "图片名称", "identifier4": "lee.png" }}
我有这样的两个json:
{ "color": { "backgroundcolor": "#F0F0F0", "textcolor": "#000000" }, "image": { "ident1": "lee.jpg", "ident2": "lee帅.png" }}
第二个json:
{ "color": { "backgroundcolor": "#000000", "textcolor": "#808080" }, "image": { "ident1": "我爱LEE.jpg", "ident2": "LEE爱我.jpg" }}
下面我们分别调用添加json的方法来讲这2个json添加给LEETheme:
//添加json设置数据 , 设置主题标签 , 设置资源路径(如果资源路径为nil 默认会在mainBundle中查询所需资源)[LEETheme addThemeConfigWithJson:第一个json Tag:@"day" ResourcesPath:nil];[LEETheme addThemeConfigWithJson:第二个json Tag:@"night" ResourcesPath:nil];
通过上面的代码可以很清楚的看出 , 我添加了一个json , 并设置主题标签为@"day" 那么也就是说第一个json 它对应的就是@"day"标签主题的配置信息 , 多主题情况依次类推.
添加好JSON的配置信息后 , 接下来我们只要为需要根据主题变化的对象设置标识符就可以了:
//设置背景颜色的标识符 , 这个标识符和你的json文件中配置的标识符对应self.view.lee_theme.LeeConfigBackgroundColor(@"backgroundcolor");
这样只要为这些对象设置好对应的属性的标识符 , 那么当主题变换的时候 它就会自动根据相应主题JSON中的标识符的值进行设置.
切换主题
切换主题非常简单 只需要调用下面的方法 传入你要启用的主题的标签就可以了.
//启用主题[LEETheme startTheme:@"day"];
这里建议使用时在didFinishLaunchingWithOptions
代理方法中设置一下默认主题 , 这样在APP第一次开启时启用默认主题.
//设置默认主题[LEETheme defaultTheme:@"day"];
当然如果你重新打开APP , 那么LEETheme会自动启用上一次使用的主题.
总结
LEETheme是一个非常实用的主题管理库 , 总共只有2个文件 , 它所提供的两种不同设置方式可以满足绝大部分Coder的需求 , 可以很方便的实现多主题切换操作 , 当然不仅可以实现本地固定的主题样式切换 , 利用标识符设置方式也可以实现网络主题切换的功能 , 具体详细的使用示例我会在demo中逐一体现 , 除了强大功能外 所采用的链式语法还让你的代码更加优雅 , 好了 , 今天就介绍到这里 , 更多详细的使用示例请灰到Github上查看.
作者:与伟大LEE同行
链接:http://www.jianshu.com/p/dc7ab3a3e8f8
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- LEETheme优雅的主题管理库
- 如何优雅的管理ActionBar
- 如何优雅的管理ActionBar
- 优雅的项目配置--常用库和版本管理
- 优雅的项目配置--常用库和版本管理
- 优雅的项目配置--常用库和版本管理
- 如何优雅的管理游戏资源
- cocos2d:如何优雅的管理游戏资源
- 如何优雅的管理游戏资源
- 如何优雅的管理游戏资源
- 优雅的REST APIs文档管理
- 六西格玛管理的六个主题
- 今天的主题是时间管理
- 如何优雅的管理游戏资源 及 相关资料
- 如何优雅的管理以及书写好代码
- 沉浸式管理:让你的APP更优雅
- 【Yii】主题管理
- 主题切换及其管理
- POJ 2932 Coneology 笔记
- Linux 安装zabbix客户端
- This Activity already has an action bar supplied by the window decor
- 【LeetCode】C# 12、Integer to Roman
- 使用夹逼准则求解二重极限的例题(1)
- LEETheme优雅的主题管理库
- HTML中跳转到文章的指定段落
- 空心圆及层叠效果
- 给定一个字符串s,求子串都是回文的集合。
- php编译时错误 WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP
- Windows转Linux,相关替换软件
- Karaf教程第4部分 OSGi中的CXF服务
- Raspberry Pi 3B开箱踩坑记录
- type=file按钮样式改造