iOS小记程序员iOS Developer

降低项目耦合性之换肤功能的解析封装

2016-12-02  本文已影响103人  super_chao

<h1>我们要先知道</h1>
<h4>1.皮肤是什么? 图片
2.换肤是什么 ? 改变图片
3.通过什么方式改变? 管理类加上通知的方法
4.改变那些图片?tabbar,navigation,我的,以及页面的背景。
5.换肤应用在那里? (1)节假日切换主题(2)切换夜晚模式(3)大主题
6.必要条件是什么? (1)不同主题的同一位置图片名称必须相同(2) 我们的所有controller都继承于一个BaseViewController。BaseViewController里的方法</h4>(这里只以navigation和tarbar人为例了。)
<pre>

点击换主题地方代码
<pre>

// 主题持久化
NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:themeName forKey:kThemeNameKey];
[userDefaults synchronize];

// 重新加载数据显示UITableViewCellAccessoryCheckmark 显示选中的对号 v
[self.tableView reloadData];

}
</pre>
<h2>管理类</h2>

.h文件
<pre>

import <Foundation/Foundation.h>

import <UIKit/UIKit.h>

@interface ThemeManager : NSObject

@property (nonatomic, copy) NSString * themeName; // 主题名字
@property (nonatomic, retain) NSDictionary * themePlistDict; // 主题属性列表字典

import "ThemeManager.h"

import "NotificationMacro.h"

static ThemeManager * sharedThemeManager;
@implementation ThemeManager

// Override 重写themeName的set方法

// 返回主题路径

2F58A9D3-F16E-4BBA-B12C-FA079B7E4519.png

资源目录结构


64229767-8F68-45A9-A948-47928B74F105.png

源码地址

其他背景统一封装在baseviewcontroller中用。无法封装的背景只能另接收通知处理。当然是肯定可以封装的。hiden方法控制在唯一界面显示。有更好的方法欢迎指点。

上一篇下一篇

猜你喜欢

热点阅读