假設我有一個現有的iOS或Mac框架,我們將其稱爲Test.framework。這個框架已經成功地編譯和鏈接了(一個技巧是爲iOS部分的i386和armv6/7構建的),並且工作得很好。將圖像(或其他資源)添加到Mac或iOS框架
現在我想爲它添加一個圖像,我們稱之爲'test.png
'。我已經複製到我的框架的資源文件夾,使我有以下結構:
ls Test.framework
- Headers -> Versions/Current/Headers
- Resources -> Versions/Current/Resources
- Test -> Versions/Current/Test
- Versions
ls Test.framework/Resources
- Info.plist
- test.png
然而,當我用我的框架,創建一個項目,我不能訪問圖像。
我已經試過:
[UIImage imageNamed:@"test.png"]
[UIImage imageNamed:@"Test.framework/test.png"]
[UIImage imageNamed:@"Test.framework/Resources/test.png"]
但沒有摸索出總是給我回了nil
對象。
任何想法?
編輯
經過一番深入調查,似乎什麼,我試圖完成,不能在iOS上進行。原因是最終的應用程序包(.app)不會複製爲Mac OS編譯的應用程序所在的私有框架。
這在iOS Bundle Structures documentation中進一步詳述。
感謝Rob Keniger和xuzhe的感謝幫助。我將信譽xuzhe的答案,因爲它實際上是我最初的問題最恰當的答案(即使羅布評論讓我深入挖掘該問題)
說''imageNamed:「方法僅適用於您的應用程序包中的圖像」並非完全正確。如果我添加一個包(比如test.bundle)到我的項目中,並且這個包中包含test.png,那麼[UIImage imageNamed:@「test/test.png」]將很好地工作。 – apouche
然而,你的解決方案很有趣,但我沒有捆綁到我的應用程序中的框架(它可以安裝在commond框架文件夾中) – apouche
@apouche如果你正在應用程序包中添加一個包,然後調用'[UIImage imageNamed: @「test.bundle/test.png」];'沒問題,因爲test.bundle也在主包中。如果不是,我懷疑「imageNamed:」可以找到它。 – xuzhe