iOS开发夜间模式的设置(主题切换)
很长一段时间没有写博客了。想到自己最近刚好做了不少重构,刚好可以总结一下。
夜间模式,很多阅读类的或资讯类的App都会这个功能。以前自己也做过,现在把它抽出来封装起来。
先放地址:GitHub地址
封装思路
夜间模式,说起来就是换层皮。有因为是全局替换,我们需要知道是否切换了主题,这个时候,就可以通过通知去实现或者使用Block
去实现。我选择是通知和Block
搭配使用,使用Block
切换视图的主题,在切换主题的发出通知,在需要的地方监听。
这里所有视图都是继承UIView
的。首先,添加一个主题分类,定义好block回调。在block中监听主题切换通知。如果主题切换了,就执行Block。
当主题切换时,获取图片和颜色,通过配置好的主题文件根据Key去获取值。这个也就是Demo中的主题文件下的plist
文件。
使用详解
XTThemeManager
:主题管理类。也是整个主题切换的工具类。主要是配置主题信息,获取对应模式下的图片和颜色。
- 首先我们在
Appdelegate
的application:didFinishLaunchingWithOptions:
方法中配置主题的必要信息
// 启动时配置主题模式
[[XTThemeManager sharedManager] configureThemePackageRootFolderName:@"Skins"
themeFold