ios 主题切换 思路_IOS主题切换ThemeManager

#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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值