簡體   English   中英

資源包中的資產目錄

[英]Asset Catalogs in resource bundles

我有一個單獨的資源包隨我的框架一起提供。 我想在該捆綁中放置和使用資產目錄。 然而UIImage imageNamed:說它使用當前的應用程序主包。 如何從另一個捆綁包中的資產目錄加載圖像?

使用[bundle pathForResource:name ofType:@“png”]的技巧不適用於已編譯的資產目錄。 我已經驗證了Assets.car文件確實在包中,它包含我的圖像。

從iOS 8開始,您現在可以使用[UIImage imageNamed:inBundle:compatibleWithTraitCollection:]從不同的包中按名稱加載圖像。 例如,動態框架可以使用與主應用程序包捆綁的獨立資產目錄。

根據Apple開發人員:

不幸的是,除了Xcode編譯到主捆綁中的圖像之外,不可能從任何汽車文件中加載圖像,因為+ imageNamed:不接受捆綁參數,這是需要這樣做的(即使那樣它只會能夠在單個捆綁中打開單個資產目錄)。

鏈接在這里:

https://devforums.apple.com/message/968859#968859

有一個技巧可以使資產目錄與bundle一起使用:將資源包的部署目標設置為6.1(或更低)。 資產目錄只出現自7.0,這樣的Xcode實際上不會建立.car直接文件(編譯資產目錄),但復制的資產捆綁,如記錄在這里

Xcode 6為資產目錄提供了不同的功能,具體取決於>項目的部署目標:

  • 對於所有項目,可以使用集名稱加載單個圖像。
  • 對於部署目標至少為iOS 7或OS X 10.9的項目,Xcode會將您的資產目錄編譯為運行時二進制文件格式,從而縮短應用程序的下載時間。

需要注意的是,任何其他信息(切片,渲染模式......)都會被忽略,您只能獲得普通圖像。 雖然通過資產目錄組織可能更方便,但我覺得這可能會導致一些難以發現的錯誤/混淆......

編輯:如果您應用上述技巧,您很可能無法獲得iOS 9中引入的App Slicing優勢,因為在構建應用程序之后,沒有編譯的資產目錄,但只剩下一堆普通圖像,因此Apple不會能夠自動剝離資源。 這只是一個假設。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM