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 方法

相關文章
相關標籤/搜索