项目中要做白天夜景切换的功能,写了个扩展方便用,记录一下。不太完善,主要是提供一种思路。。。,欢迎大牛指点一下。
先附一个链接
https://github.com/evolFe/DayNightDemo
效果图:
利用category封装 使用是这样的
实现思路:
1,色值变化,主要是view的backgroundcolor,label.texColor, button.titlecolor等等。。。
要是白夜切换肯定要像实现多语言一样 有个key 然后动态绑定到视图上
这里实现是通过一个枚举,这样写代码的时候比价方便
2 图片变换,包括imageView 还有button
key 的话 就是图片本身名字 ,要是夜景的话 图片名字后加_night 例如 mine_bg.png 夜景就是 mine_bg_night.png
然后写一个字符串的 扩展
第二步,Key 解决了以后 接下来就是绑定的问题
创建一个容器类 保存该对象的target 并为对象添加方法和参数, 参数是多参数的。
这里是添加方法参数的实现, 是保存到一个数组里面了, 因为有可能例如button 可能设置了背景色,和title 图片等,多个方法保存
这里是创建容器类的时候 添加通知。。。 并遍历存储的对象方法并执行。。 支持多参数
接下来是category 绑定的问题 使用runtime特性
基本就完事儿了
此处单例使用的比较安全的方式,哈哈哈,因为之前被人问住了,所以尽量标准化写。。。
只是添加了几个简单的功能,项目还在写,用到时候继续补充。。。