内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

节日主题方案的探索

2018-06-08 18:51 出处:清屏网 人气: 评论(0

2018年5月21日,鹊桥搭好了

1. 如何做到换肤?

换肤我们需要改变图片、颜色、文字、布局等一气呵成,如果不需要节日主题了还需要变回原来的模样。既然是需要统一处理(个别地方要单独处理),自然就想到了分类,是的又是分类!我们在分类中运用关联对象 (objc_getAssociatedObject、 objc_setAssociatedObject)增加自定义属性并且定义替换系统的方法的方法,并将需要改变的地方替换成我们自定义的属性和方法,而我们只需在我们自定义的属性和方法里判断加载默认还是新的皮肤,这里有一点就是当我们页面初始化时就加载了默认的版本后只调用一次就不再调用了该怎么办?这就是我说的个别地方,我们只需发个通知让它刷一下需要改变的地方即可~

2. 该如何去架构?

首先我们需要一个Manage去调度整个主题模块,并且需要一个下载器去向服务器请求下载新皮肤包,为了减少包大小节省流量更快的下载等等原因都会把皮肤文件压缩下载,所以我们需要解压并且存到文件系统中去,如果有之前的旧皮肤包就需要删除替换,注意这个旧的皮肤包不包括我们默认的配置, 我们默认的配置需要我们定义维护一个json文件,里面包括所有需要改的图片、颜色、文字、布局等 。新的皮肤包和默认的json文件的key值应该是一样的!

3. 核心思想是什么?

核心思想其实很简单,模块化和运行时 ,将换肤这个功能看做一个单独大的模块,和App业务模块解耦合,模块内部像下载器、解压缩 、文件管理、分类等都可以看成一个小模块。至于运行时就是前文提到的关联对象已经分类的运用,附上我之前写的关于分类的运用,这里也是个补充吧 。Category 你用好了吗?

用到的技术就是分类+运行时 ,解压缩 (可以使用这个开源框架 SSZipArchive ),文件操作,下载器的实现等,把每一个都看成一个小模块,分别实现即可。

分享给小伙伴们:
本文标签: iOS开发

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号