2013-02-12 148 views
0

我有一個靜態庫,我需要一些圖形資源作爲圖像。 在我的課堂我會以這種方式添加圖像:iOS靜態庫與圖像資源

[UIImage imageNamed:@"myImage.png"] 

,但它不工作... 我該怎麼辦呢?

回答

1

我找到了解決辦法..

我探索了包目錄(編譯)和我已經注意到,我的圖像(.png)他們都在iestensione .tiff

爲了避免這一點,我設置關鍵HIDPI_COMBINE_IMAGES我捆打造專業化設置爲NO

..所以通過e1985

+1

謝謝。如果你想知道,實際的標誌叫做COMBINE_HIDPI_IMAGES。 – 2014-10-02 11:01:49

1

除靜態庫之外,您不能提供任何代碼。這是因爲.a文件是目標文件的簡單歸檔文件,在支持多CPU架構的Mac/iOS下增加了功能。

你唯一的選擇是建立一個框架,它可以提供的代碼以及其他資源。

+0

好吧,我已經創建了一個包在我的圖書館我的資源,我該如何使用這些資源:

然後從外部的項目,我只是做這個發現在框架捆綁的文件嗎?我遵循這個教程http://www.galloway.me.uk/tutorials/ios-library-with-resources/ – Safari 2013-02-12 11:56:33

+0

@GgSalent對我來說看起來像是一種黑客攻擊,我認爲資源真的是圖書館;他們可能位於相同的目錄中,但這是所有庫和包的共享。我不知道如何使用捆綁中的資源。 – trojanfoe 2013-02-12 12:01:30

1

在Xcode中,如果您鏈​​接靜態庫,從庫中的代碼被直接計入您的可執行文件。沒有文件被複制到應用程序包,因此無法複製圖像。

如果你有你的靜態庫中的圖片文件,你可以簡單地把它添加一個文件拷貝建造階段Xcode中的目標複製到您的應用程序包。

2

一旦你的包,你可以訪問的資源,你必須有這樣的:

NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"YourBundle" ofType:@"bundle"]; 
NSString *imagePath = [[NSBundle bundleWithPath:bundlePath] pathForResource:@"yourImage" ofType:@"png"]; 
UIImage *image= [[UIImage alloc] initWithContentsOfFile:imagePath]; 
+0

是的..但圖像是零.. 我添加了我的圖像(例如myImage.png在我的包資源上),我測試了你的方式......但圖像obj是零! :( – Safari 2013-02-12 17:23:59

0

的建議做一個框架的目標,而不是靜態庫,我可以恢復我的照片。 確保您的框架的構建階段中存在「複製包資源」。在那裏添加你的資源文件。

NSArray<NSBundle *> * bundles = [NSBundle allFrameworks]; 
NSString * filePath; 
for (int i = 0; i < bundles.count; i++) { 

    filePath = [[bundles objectAtIndex:i] pathForResource:@"picture" ofType:@"png"]; 
    if (filePath != nil) break; // found 
}