ios换肤基本实现
首先,換膚的思路大概都是一樣的。幾種方法的比較。
1.傳值:一個工程中不知道有多少個頁面。那么傳值有些不太現實。
2.通知:這個還可以。那么,有些頁面還沒有被創建出來,這時改變樣式呢?
3.數據持久化:
?
換膚工具類
SkinTool.h
#import <UIKit/UIKit.h>@interface SkinTool : NSObject+ (void)setSKinColor:(NSString *)skinColor;+ (UIImage *)skinToolWithImageName:(NSString *)imageName;+ (UIColor *)skinToolWithLabelColor;@end?
SkinTool.m
#import "SkinTool.h"@implementation SkinToolstatic NSString *_skinColor;+ (void)initialize {_skinColor = [[NSUserDefaults standardUserDefaults] objectForKey:@"skinColor"];if (_skinColor == nil) {_skinColor = @"blue"; //這里是默認顏色。如果沒有設置顏色,就是這個顏色。} }+ (void)setSKinColor:(NSString *)skinColor {_skinColor = skinColor;// 保存用戶選中的皮膚顏色[[NSUserDefaults standardUserDefaults] setObject:skinColor forKey:@"skinColor"];[[NSUserDefaults standardUserDefaults] synchronize]; }+ (UIImage *)skinToolWithImageName:(NSString *)imageName {NSString *imagePath = [NSString stringWithFormat:@"skin/%@/%@", _skinColor ,imageName];return [UIImage imageNamed:imagePath]; }+ (UIColor *)skinToolWithLabelColor {// 1.獲取plist的路徑NSString *plistName = [NSString stringWithFormat:@"skin/%@/bgColor.plist", _skinColor];NSString *plistPath = [[NSBundle mainBundle] pathForResource:plistName ofType:nil];// 2.讀取顏色的點擊NSDictionary *colorDict = [NSDictionary dictionaryWithContentsOfFile:plistPath];// 3.讀取對應顏色的字符串NSString *colorString = colorDict[@"labelBgColor"];// 4.獲取顏色數組NSArray *colorArray = [colorString componentsSeparatedByString:@","];// 5.讀取對應RGBNSInteger red = [colorArray[0] integerValue];NSInteger green = [colorArray[1] integerValue];NSInteger blue = [colorArray[2] integerValue];return [UIColor colorWithRed:red/255.0 green:green/255.0 blue:blue/255.0 alpha:1.0]; }@end?
控制器中
- (void)viewDidLoad {[super viewDidLoad];[self changeImages]; } - (IBAction)changeToOrangeSkin {[SkinTool setSKinColor:@"orange"];[self changeImages]; }- (IBAction)changeToBlueSkin {[SkinTool setSKinColor:@"blue"];[self changeImages]; }- (IBAction)changeToRedSkin {[SkinTool setSKinColor:@"red"];[self changeImages]; }- (IBAction)changeToGreenSkin {[SkinTool setSKinColor:@"green"];[self changeImages]; }- (void)changeImages {self.faceImageView.image = [SkinTool skinToolWithImageName:@"face"];self.heartImageView.image = [SkinTool skinToolWithImageName:@"heart"];self.rectImageView.image = [SkinTool skinToolWithImageName:@"rect"]; }或者
@implementation TwoViewController- (void)viewDidLoad {[super viewDidLoad]; }- (void)viewWillAppear:(BOOL)animated {[super viewWillAppear:animated];self.faceImageView.image = [SkinTool skinToolWithImageName:@"face"];self.heartImageView.image = [SkinTool skinToolWithImageName:@"heart"];self.rectImageView.image = [SkinTool skinToolWithImageName:@"rect"];self.testLabel.backgroundColor = [SkinTool skinToolWithLabelColor]; }@end?
轉載于:https://www.cnblogs.com/kinghx/p/5294463.html
總結
- 上一篇: Linux命令:tail
- 下一篇: NSTimer