一. 硬件信息的获取
- 应用场景
例如
QQ空间APP 发说说时, 出现的什么什么型号的手机;
迅雷APP 下载文件时提示剩余空间,已用空间
- 实现方案
直接通过第三方工具类(UIDevice的分类), 进行获取对应信息
原因: 自己写起来比较复杂, 很多C语言的东西, 而且没有必要;
- 框架完善
框架存在问题: 该第三方框架从2012年就停止更新了,意味着12年之后的手机型号都没有, 需要手动添加, 修改框架
解决方案: 找到对应的实现方法, 使用真机进行测试, 手动新增手机型号
二. 换肤
- 换肤的应用场景?
一般应用在某些APP , 在节假日更换主题, 或者切换白天或者夜间模式时使用.
换肤的实现方案
方案1
将图片以及颜色按照主题命名,使用虚拟文件夹, 直接在各个控制器针对不同主题单独设置
缺点:
扩展性差, 增加一个主题非常复杂
代码分散, 可维护性差
使用虚拟文件夹保存资源, 容易与其他资源容易产生冲突
方案2
抽取公共的切换主题类, 使用物理文件夹, 并将图片按照应用场景命名, 不按照主题命名, 但是按照主题划分文件夹
优点:
扩展性好, 增加主题简单
功能代码集中,
方便维护资源包单独管理,
不会产生资源冲突
演练步骤
实现基本的换肤功能
使用用户偏好记录当前皮肤主题
抽取公共的皮肤管理类, 简化控制器逻辑
验证多处加载主题情景
加载主题文字颜色功能实现