简单是换肤示例
来源:互联网 发布:制作纪录片的软件 编辑:程序博客网 时间:2024/06/06 14:07
1.抽取的工具类
//// 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.读取对应RGB NSInteger 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];}@end2.控制器使用
//// ViewController.m#import "ViewController.h"#import "SkinTool.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UIImageView *faceImageView;@property (weak, nonatomic) IBOutlet UIImageView *heartImageView;@property (weak, nonatomic) IBOutlet UIImageView *rectImageView;@end@implementation ViewController/* 问题一:默认进来没有皮肤颜色 问题二:没有记录用户选中皮肤颜色 问题三:和美工沟通的问题 问题四:多个控制器的换肤 问题五:换肤的ImageView不要写在viewDidLoad方法 */- (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"];}@end
//// TwoViewController.m#import "TwoViewController.h"#import "SkinTool.h"@interface TwoViewController ()@property (weak, nonatomic) IBOutlet UIImageView *faceImageView;@property (weak, nonatomic) IBOutlet UIImageView *heartImageView;@property (weak, nonatomic) IBOutlet UIImageView *rectImageView;@property (weak, nonatomic) IBOutlet UILabel *testLabel;@end@implementation TwoViewController- (void)viewDidLoad { [super viewDidLoad];}//换肤的ImageView不要写在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];}@end4.注意图片需要创建真实目录存放
5.换颜色
把每个主题的颜色,用plist保存起来
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>labelBgColor</key><string>0,0,255</string></dict></plist>
换肤工具类中处理:
// 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.读取对应RGB NSInteger 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];
0 0
- 简单是换肤示例
- JNDI简介&简单示例
- JNDI简介&简单示例
- JNDI简介&简单示例
- Delegate简单示例
- SetMenu的简单示例
- 简单的CodeDOM示例
- Java RMI 简单示例
- Java RMI 简单示例
- 正则表达式简单示例
- Ajax简单请求示例
- Oracle简单示例讲解
- 简单UDP收发示例
- TreeView简单示例
- 最简单jmx示例
- php+ajax简单示例
- 最简单jmx示例
- Ajax应用简单示例
- linux 查看磁盘空间文件大小
- 获取屏幕宽度和高度
- LWIP之HTTP
- linux yum命令详解
- linux清屏命令clear和reset
- 简单是换肤示例
- linux yum命令详解
- 年终随笔
- https原理及tomcat配置https方法
- Codeforces Round #342 (Div. 2)--B. War of the Corporations
- 硬件信息获取
- C++参考的翻译或校对
- Codeforces Round #342 (Div. 2)--A. Guest From the Past
- Android项目中的DAO