換膚的話,須要 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 方法