我有一個靜態庫,我需要一些圖形資源作爲圖像。 在我的課堂我會以這種方式添加圖像:iOS靜態庫與圖像資源
[UIImage imageNamed:@"myImage.png"]
,但它不工作... 我該怎麼辦呢?
我有一個靜態庫,我需要一些圖形資源作爲圖像。 在我的課堂我會以這種方式添加圖像:iOS靜態庫與圖像資源
[UIImage imageNamed:@"myImage.png"]
,但它不工作... 我該怎麼辦呢?
我找到了解決辦法..
我探索了包目錄(編譯)和我已經注意到,我的圖像(.png
)他們都在iestensione .tiff
爲了避免這一點,我設置關鍵HIDPI_COMBINE_IMAGES
我捆打造專業化設置爲NO
..所以通過e1985
除靜態庫之外,您不能提供任何代碼。這是因爲.a
文件是目標文件的簡單歸檔文件,在支持多CPU架構的Mac/iOS下增加了功能。
你唯一的選擇是建立一個框架,它可以提供的代碼以及其他資源。
在Xcode中,如果您鏈接靜態庫,從庫中的代碼被直接計入您的可執行文件。沒有文件被複制到應用程序包,因此無法複製圖像。
如果你有你的靜態庫中的圖片文件,你可以簡單地把它添加一個文件拷貝建造階段Xcode中的目標複製到您的應用程序包。
一旦你的包,你可以訪問的資源,你必須有這樣的:
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"YourBundle" ofType:@"bundle"];
NSString *imagePath = [[NSBundle bundleWithPath:bundlePath] pathForResource:@"yourImage" ofType:@"png"];
UIImage *image= [[UIImage alloc] initWithContentsOfFile:imagePath];
是的..但圖像是零.. 我添加了我的圖像(例如myImage.png在我的包資源上),我測試了你的方式......但圖像obj是零! :( – Safari 2013-02-12 17:23:59
的建議做一個框架的目標,而不是靜態庫,我可以恢復我的照片。 確保您的框架的構建階段中存在「複製包資源」。在那裏添加你的資源文件。
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
}
謝謝。如果你想知道,實際的標誌叫做COMBINE_HIDPI_IMAGES。 – 2014-10-02 11:01:49