2015-10-21 77 views
3

我有一個框架項目,該項目使用多個圖像。因爲它代表我只需將這些圖像轉化項目,讓他們坐在一起我的源文件:將.xcassets文件添加到Xcode框架項目

enter image description here

當我嵌入這個項目到一個單獨的應用項目,符合市場預期,我可以訪問這些資源。

理想情況下,我現在想組織一個.xcassets文件我的框架圖像。與應用程序項目不同,框架項目模板默認不提供其中之一,因此我已使用文件>新建菜單手動添加了一個。不幸的是,當我重建框架並重新嵌入時,我無法再訪問這些圖像。我正在嘗試做什麼?

回答

1

從我可以做出來,回答我的問題是肯定的,有點...

爲了使用這些API NSImage(named: ...)兩兩件事必須是真實的:要麼是像應應用程序的主束中存在,或(套用的docs):

[應有]一個[NSImage中]對象,其名稱被設置顯式使用的setName:方法和當前駐留在我是一個ge緩存。

在圖像駐留在嵌入式框架中的情況下,第一種情況並非如此,因爲框架是單獨的包,並且在運行時無法添加到主包中。這留下了第二種方法。

每當你的代碼將使用NSImage(named: ...)確保您已使用其他一些方法已加載的圖像,然後將其名稱:

let bundle = NSBundle(forClass: MyFrameworkClass.self) 
let image = bundle.imageForResource(name) // image in the framework .xcassets 
image.setName(name) 

我不知道有多少使用,這是和您應該清楚文檔中有關圖像緩存如何操作的註釋,但至少有一種方法可將圖像存儲在一個捆綁包中的.xcassets文件夾中,然後從另一個捆綁包中訪問它們。