先来一张效果图
img1.gifDKNightVerson 使用说明
DKNightVerson是一款非常实用的换肤框架,大致原理就是通过类扩展给View类添加了一些属性,DK_manager是记录当前日夜间模式的单例,pickers是用来记录一个View已实现的主题功能(dk_textClolrPIcker,dk_backgroundColor 等),当修改主题通知发送后,遍历pickers就刷新了已实现的方法
DKNight.png色值的传递是通过一个block,block传入参数就是当前的主题模式,
typedef UIColor *(^DKColorPicker)(DKThemeVersion *themeVersion);
如果我们要实现换色的功能,只要在以下方法传一个DKCOlorPicker就可以了
self.view.dk_backgroundColorPicker =
HPColorTable 就是将本地的plist表代替了DKColorTable.text,修改为我们需要传过去的颜色,在传出去就OK了,这样就实现了主题颜色的修改,注意key值一定要和plist表里的对应
主要实现
HPColorTable
颜色和图片管理的单例,当前主题是存在NSUserDefaults 中,
reloadColorTable 是修改图片和颜色表的路径
用来回调颜色
- (DKColorPicker)pickerWithKey:(NSString *)key
用来回调图片
+ (DKImagePicker)imgPickerWithKey:(NSString *)key
HPThemeManager
主题管理类,包含删除,下载,解压,切换,存储等功能
下载及存储目录
屏幕快照 2019-01-30 下午3.48.44.png下载使用的是
NSData *data = [NSData dataWithContentsOfURL:theme.themeZipUrl options:0 error:&error];
<font color=red >如果要在项目中使用的话,这里一定要换成AFN的</font>
目录结构如上图,Library下建一个Theme用来存放所有的主题相关,dowmloadTheme.plist 是本地所有已下载的主题,其他的都是各个加压后的zip包,zip包解压后删除,每个主题资源下都有各自的颜色表ThemeConfig.plist,HPColorTable就是从里获取色值。
<font color=red >实际使用时记得要将文件夹和主题名字改为model里的md5加密</font>
api来自QQ主题,一些图片和色值会无法使用
最后,地址放上==>帮到您的话👍🌟
网友评论