#import "ThemeManager.h"
#define kDefaultThemeName @"默认主题"
#define kThemeName @"kThemeName"
@implementation ThemeManager
static ThemeManager *instance = nil;
+(ThemeManager *)shareInstance
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[ThemeManager alloc] init];
});
return instance;
}
- (id)init
{
self = [super init];
if (self) {
NSString *themePath = [[NSBundle mainBundle] pathForResource:@"theme" ofType:@"plist"];
_themeDic = [[NSDictionary dictionaryWithContentsOfFile:themePath] copy];
//从 NSUserDefaults 读取主题
NSString *theme = [[NSUserDefaults standardUserDefaults] objectForKey:kThemeName];
if (theme) {
self.themeName = theme;
}else{
self.themeName = kDefaultThemeName;
}
}
return self;
}
- (void)dealloc
{
[_themeName release];
[_themeDic release];
[_fontColorDic release];
[super dealloc];
}
-(NSString *)themePath
{
//1.获取程序包的路径
NSString *rootPath = [[NSBundle mainBundle] resourcePath];
//2.获取当前主题对应的路径
NSString *themePath = [self.themeDic objectForKey:_themeName];
return [rootPath stringByAppendingPathComponent:themePath];
}
//切换主题
-(void)setThemeName:(NSString *)themeName
{
if (_themeName != themeName) {
[_themeName release];
_themeName = [themeName copy];
//读取主题颜色配置文件
NSString *fontFilePath = [[self themePath] stringByAppendingPathComponent:@"config.plist"];
self.fontColorDic = [NSDictionary dictionaryWithContentsOfFile:fontFilePath];
}
}
-(UIImage *)loadThemeImage:(NSString *)imgName
{
if (!imgName) {
return nil;
}
NSString *imgPath = [[self themePath] stringByAppendingPathComponent:imgName];
return [UIImage imageWithContentsOfFile:imgPath];
}
-(UIColor *)loadColorWithKeyName:(NSString *)themeKeyName
{
if (!themeKeyName) {
return nil;
}
NSDictionary *rgbDic = [_fontColorDic objectForKey:themeKeyName];
float r = [[rgbDic objectForKey:@"R"] floatValue];
float g = [[rgbDic objectForKey:@"G"] floatValue];
float b = [[rgbDic objectForKey:@"B"] floatValue];
return [UIColor colorWithRed:r/255 green:g/255 blue:b/255 alpha:1];
}
//保存主题
-(void)saveTheme
{
[[NSUserDefaults standardUserDefaults] setObject:_themeName forKey:kThemeName];
[[NSUserDefaults standardUserDefaults] synchronize];
}
@end