iOS元件化 本地資源載入問題

2021-09-19 06:06:47 字數 2387 閱讀 1099

元件**的上傳:上傳元件至cocoapods

在元件工程的.podspec配置中說到,本地資源載入的配置方式有兩種:

# 方式一:會自動建立乙個.bundle包,將資源放到.bundle下

# bundle名稱可以自定義,在下面配置

s.resource_bundles =

# 方式二:資源直接放到目錄下

s.resources = ['trectdetector/assets/resource/*.png']

因為在oc中podfile一般不使用use_frameworks!,所以我們不使用use_frameworks!,分別用兩種方式載入資源,使用example專案pod install進行測試:

}//使用

//直接用imagenamed載入,不用全名

self.gridimageview.image = [uiimage imagenamed:@"camera_grid"];

我們也可以手動把資源放進trectdetector.bundle裡面:在assets目錄下建立乙個trectdetector.bundle,把資源放進bundle裡面,修改.podspec檔案

s.resources = ['trectdetector/assets/resource/*.bundle']
重新執行pod install,然後可以發現與方式就是一樣的。這個時候使用方式一的載入方式也能正常顯示。

********************= 分割線 ***************=

前面說到,podfile檔案中,如果不使用swift或者dynamic frameworks,一般不使用use_frameworks!,那麼用和不用有什麼區別嘞,下面就說說這個:

1、不使用use_frameworks!時,pod匯入進來的三方庫一般編譯成static library(.a),解壓後是一堆可執行二進位制檔案(.o),如果和專案中的類名相同會衝突;因只包含二進位制檔案,體積較小,資源檔案需另外提供。

2、那麼使用use_frameworks!時,三方庫最終編譯成framework(static || dynamic),包含**簽名、標頭檔案、二進位制執行檔案和靜態資源。所有的.framework會存放在mainbundle下的frameworks目錄下。也就是說使用s.resources載入資源的方式,這個時候用imagenamed並不能載入,因為資源並不在mainbundle下。

下面是使用use_frameworks!,方式一和方式二的載入情況:

iOS元件化 建立CocoaPods本地私有庫

chatframework是要建立的私有庫的名字 pod lib create chatframework 然後按照提示回答幾個問題即可 先簡單介紹下 chatframework.podspec 檔案是私有庫的配置檔案 chatframework 該資料夾是存放私有庫的類和資源的地方 example...

iOS載入本地HTML

目標 讀取本地的html檔案來展示h5頁面。ios8以後,蘋果推出了新框架webkit。所以分別用uiwebview和wkwebview來實現看看。以下僅當html檔案的檔名為index.html。webview除錯方法是在模擬器顯示webview之後,開啟safari的 開發 tab的simula...

iOS載入本地html,css樣式失效問題

檔案拖入專案的時候選的 這樣的話,檔案在編譯成 ipa 的時候。檔案會拷貝到根目錄下。而 中是這樣寫的,nsstring filepath nsbundle mainbundle pathforresource protocol oftype html indirectory nsstring ht...