使用CocoaPods集成的遠程私有公有庫如何使用圖片資源

在這里默認你已經了解集成遠程私有或者共有庫了,如果不是很清楚,建議先看一下
教你一步步用CocoaPods創建遠程公有庫
教你一步步用CocoaPods創建遠程私有庫
在pods中使用圖片資源有三種方式:

  • 直接把圖片放在Pods中,然后添加引用路徑
  • 把圖片放在bundle中,添加引用路徑
  • 把圖片放在Assets.xcassets中,添加引用路徑

1、首先是先把圖片資源添加到封裝的庫中
1.1、

image.png

1.2、修改.podSpec文件指定我們資源文件的路徑
image.png

注意一下,最后一定是寫*
因為我們的圖片資源不一定只有png有可能還有jpg格式的。

2、加載圖片的寫法
我們一般加載圖片的寫法有兩種

UIImage *image = [UIImage imageNamed:@"圖片"];
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"圖片" ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];

但是發現這兩種寫法,都不能加載我們的私有庫資源中的圖片,上面的兩種寫法,倒是可以加載我們主項目中項目中的圖片和Images.xcassets中的圖片。

上面的兩種寫法,實際上是去加載的哪里的圖片呢?


image.png
UIImage *image = [UIImage imageNamed:@"圖片"];

這句話默認加載的是下面這兩種圖片,一種是我們直接拖到項目中的圖片,一種是我們拖到Images.xcassets

image.png

NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"圖片" ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];

這句話加載的則是我們直接拖到主項目中的圖片。

我們添加到pod庫中的圖片去哪里了?


image.png
image.png

仔細看,我們的圖片的位置是在一個單獨的bundle中的。
所以上面的兩種加載圖片的方式肯定是不行的

加載封裝到pod庫中圖片的正確姿勢是這樣的:

   // 注意圖片名稱的格式,必須寫全 @2x 或者 @3x  后綴名都得寫
    NSString *imageName = @"compose_photograph@2x.png";
    // 獲取當前的bundle,self只是在當前pod庫中的一個類,也可以隨意寫一個其他的類
    NSBundle *currentBundle = [NSBundle bundleForClass:[self class]];
    // 獲取當前bundle的名稱
    NSString *currentBundleName = currentBundle.infoDictionary[@"CFBundleName"];
    // 獲取圖片的路徑
    NSString *imagePath = [currentBundle pathForResource:imageName ofType:nil inDirectory:[NSString stringWithFormat:@"%@.bundle",currentBundleName]];
    // 獲取圖片
    UIImage *imageFile = [UIImage imageWithContentsOfFile:imagePath];

當然了方法不是唯一的,最快捷的參考辦法是參考其他的封裝的pod是怎么加載圖片的

image.png

當然了,也有這種做法,就是直接把所有的圖片都存儲在Assets.xcassets,然后遠程私有庫調用圖片的時候和在主項目寫法一致就可以了,但是這樣的封裝性貌似差點。不過沒有最牛逼,只有最合適。

如有失誤請各位路過大神即時指點,或有更好的做法,也請指點一二。在下不甚感激。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容