??自定義開發(fā)的 Framework 中本地資源加載與我們平時工程中的資源加載是不同的航夺,主要原因是 Bundle 的不同 。開發(fā)的 Framework 是一個獨立的 Bundle崔涂, 主工程中平時常用的 mainBundle 獲取到的 Bundle 不是 Framework 的 Bundle阳掐。
注: Bundle 介紹
1. 自定義 Framework 中圖片資源加載
1.1 Image.bundle 中的圖片加載
NSBundle*bundle = [NSBundle bundleForClass:[self class]];
UIImage *img = [UIImage imageNamed:[NSString stringWithFormat:@"Image.bundle/%@",image] inBundle:bundle compatibleWithTraitCollection:nil];
注:圖片資源在 .bundle 文件中
- 使用 bundleForClass: 方法獲取當前類所在的 bundle。
- 使用 UIImage 的類方法 + (nullable UIImage *)imageNamed:(NSString *)name inBundle:(nullable NSBundle *)bundle compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection冷蚂;此時 name 參數(shù)需要拼接上 image 所在 Image.bundle 的路徑缭保;bundle 參數(shù)需要傳獲取的 bundle 對象。
- xib蝙茶、storyboard 中無法使用對應的圖片資源艺骂。
1.2 Images.xcassets 中的圖片加載
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
UIImage *image = [UIImage imageNamed:@"zlife_add_360yt" inBundle:bundle compatibleWithTraitCollection:nil];
注:圖片資源在 .xcassets 文件中
1.類方法 + (nullable UIImage *)imageNamed:(NSString *)name inBundle:(nullable NSBundle *)bundle compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection; 中的 name 參數(shù)直接傳入圖片名字隆夯。
- xib钳恕、storyboard 中可以使用對應的圖片資源。
2. 自定義 Framework 中本地 HTML 資源加載
藍色的是folder 黃色的是group蹄衷。二者區(qū)別
group:
一般在工程中是文件夾的形式忧额,如果選擇 Group 則在本地的目錄中會出現(xiàn)對應的文件夾,如果選擇 Group without Floder 則本地以散亂的形式放在一起的愧口,除非你是從外部以group的形式引用進來的睦番。
folder :
只能作為資源,整個引用進項目调卑,不能編譯代碼抡砂,也就是說大咱,以folder形式引用進來的文件恬涧,不能被放在complie sources列表里面。
2.1 本地 HTML 加載 Group 中的圖片
獲取 HTML 文件
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
NSURL *htmlFileURL = [[bundle URLForResource:@"home" withExtension:@"html"]碴巾;
HTML 文件中加載圖片(包括 CSS)資源處的書寫應該刪除路徑溯捆,只保留圖片名字
<a href="wg.html">
<img src='wangguan.png' style="width:85%;margin-top: 10px;"/>
</a>
2.2 本地 HTML 加載 folder 中的圖片
HTML 文件中加載圖片(包括 CSS)資源處的書寫,應按正常的 HTML 資源路徑書寫
<a href="wg.html">
<img src='img/wangguan.png' style="width:85%;margin-top: 10px;"/>
</a>
3. 自定義 Framework 中 xib 文件等
加載 xib
NSBundle *woHomeBundle = [NSBundle bundleForClass:[WHMainViewController class]];
WHMainViewController *mainVC = [[WHMainViewController alloc] initWithNibName:@"WHMainViewController" bundle:woHomeBundle];
加載音頻
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
NSString *soundFilePath = [bundle pathForResource: @"greed" ofType: @"mp3"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];