您的位置:首页 > 移动开发 > IOS开发

iOS-夜间模式(换肤设置)

2017-11-20 09:20 621 查看



一、实现功能及主要思路

实现功能:

iOS 开发中有时候会有夜间模式(换肤设置)的需求, 其实主要是更改相关颜色操作.每次切换夜间/白天模式时,都会发出通知给所有ViewController,让它们切换到相应的主题.

主要思路:

1. 创建一个管理模式主题的单例管理类ThemeManage

2. 封装好需要做夜间模式变色处理的控件扩展:UIView (ThemeChange), UINavigationBar (ThemeChange), UITabBar (ThemeChange), UILabel (ThemeChange), UIButton (ThemeChange)

3. 在 AppDelegate里先获取夜间模式状态, 根控制器里先设置tabBar 及 子控制器里navigationBar的夜间模式状态

4. 添加控制白天/黑夜模式item,发通知切换相对应i模式及image

5. 添加相关控件是否黑夜模式下已更换字色和背景色


二、程序实现

Step1. 创建一个管理模式主题的单例管理类

ThemeManage.h 文件里添加模式管理单例:
ThemeManage. m 文件:

单例的初始化:
重写isNight的set方法 (是否是夜间 YES表示夜间, NO为正常)
Step2. 封装好需要做夜间模式变色处理的控件扩展

一般需要UIView (ThemeChange), UINavigationBar (ThemeChange), UITabBar (ThemeChange), UILabel (ThemeChange), UIButton (ThemeChange);

详情见 Demo, 这里拿 UIView 做例子:

添加颜色状态枚举值 颜色的定义(一个代表一套):
添加type的set,get方法:
开始监听:
改变颜色:
设置颜色类型和对应颜色:
改变字体颜色的方法, 空方法, 可以在子类中重写这个方法来改变颜色(例如:Label):
Step3. 在 AppDelegate里先获取夜间模式状态, 根控制器里先设置tabBar 及 子控制器里navigationBar的夜间模式状态
获取夜间模式状态:

RootViewController.m 文件里设置navigationBar的夜间模式状态:
Step4. 添加控制白天/黑夜模式item,发通知切换相对应i模式及image
Action点击动作事件(切换夜间模式):

发了通知不要忘记移除监听:
Step5. 添加相关控件是否黑夜模式下已更换字色和背景色


三、项目截图及运行效果

项目截图:





这时候测试下, 看下运行效果:



夜间模式对比截图:




四、其他补充

界面性问题可以根据自己项目需求调整即可, 具体可参考代码, 项目能够直接运行!

如需看源码,请点击这里下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息