10 - iOS换肤的实现

换肤的话,须要 UI 设计师提供一整套不一样风格的素材. 为了双方方便, 有如下两条注意点spa

(1)  直接让设计师将风格不一样的图片分红不一样的文件夹设计

(2) 不一样文件下的图片名称都相同便可code

 

换肤实现步骤:orm

1. 将美工提供的已经分好的文件夹拖入项目中, 以实体文件夹而非Groupblog

2. 写一个 UIImage 的分类图片

3. 为 UIImage 添加方法 字符串

+ (UIImage *)imageWithName:(NSString *)name;

4. 实现该方法(将文件的解析过程封装在此方法中, 一劳永逸)string

+ (UIImage *)imageWithName:(NSString *)name
{
    NSString *dir = [[NSUserDefaults standardUserDefaults] stringForKey:@"SkinDirNameKey"];
    NSString *path = [NSString stringWithFormat:@"Skins/%@/%@", dir, name];
    return [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:path ofType:nil]];
}
// 1. 从本地沙盒中取出当前皮肤的类型
// 2. 根据当前皮肤类型拼接字符串,获得图片存在于本地的路径
// 3. 根据路径,拿到并返回当前图片

5. 这样, 设置图片的时候就能够经过 UIImage 的it

+ (UIImage *)imageWithName:(NSString *)name;

方法进行图片的获取class

6. (拓展) 若是说项目中已经用到了 

+ (nullable UIImage *)imageNamed:(NSString *)name;

这个方法获取图片, 那么能够经过 Runtime 的方法交换将 UIImage 的 imageNamed 方法交换为 分类中的 imageWithName 方法

相关文章
相关标签/搜索