2012-07-16 46 views
13

在我的Xcode項目中,我有一個藍色的引用文件夾,它指向一個帶有圖像的文件夾。UIImage imageNamed:在藍色引用的Xcode文件夾中找不到圖像

藍色文件夾的好處是我不必手動將文件添加到Xcode。 所以,當我添加一個新的圖像文件夾,它會自動但是顯示了在Xcode中,當我嘗試使用

[UIImage imageNamed:@"myFileFromTheBlueFolder"]; 

引用從代碼的文件沒有找到圖片雖然頂層文件夾添加到目標。 :-(

我一定要參考不同的,當我從一個藍色的文件夾,這將恕我直言擊敗所有具有該文件夾的目的來的圖像。

+0

加入您的Xcode文件結構的屏幕截圖顯示的圖像 – nduplessis 2012-07-16 07:37:04

+1

你試過乾淨?總是似乎必須清理藍色文件夾 – Martin 2012-07-16 07:39:02

+0

「藍色」文件夾是一個目錄。您可能(或必須)在'imageNamed'參數中包含該路徑。否則,你將不得不遵循凱文巴拉德的建議。你還需要擴展你的文件。 – Rob 2012-07-16 07:46:25

回答

9

我想象中的問題是「藍色文件夾「(例如,文件夾引用,而不是組)被複制到你的應用程序資源中,也就是說,它並不像資源一樣被壓扁。如果你檢查你的內置產品,在你所有的普通資源旁邊可能會看到文件夾本身,並且該文件夾中的所有內容仍在該文件夾中

因此,+[UIImage imageNamed:]找不到圖像,因爲它不會遞歸到子目錄中您可以使用-[NSBundle pathForResource:ofType:inDirectory:]以獲取資源路徑並將其傳遞給+[UIImage imageWithContentsOfFile:],但這會丟棄+imageNamed:所具有的內存優化(例如,它緩存使用的圖像並丟棄未使用的圖像)。

或者,您可以停止使用文件夾引用。或者,您可以從資源構建階段刪除文件夾引用,並添加一個shell腳本構建階段,將其內容複製到構建的產品中。

+0

非常感謝您的解釋。我想我會堅持團體。我也許可以設法使用AppleScript或類似方式自動將文件添加到組中。這樣我就可以從藍色文件夾中獲益。 – Besi 2012-07-16 09:35:54

+0

@Besi:你爲什麼要在Xcode之外的項目中添加文件?教個人直接使用Xcode來添加文件是很簡單的。 – 2012-07-16 19:34:48

+0

我必須使用文件夾引用,因爲我的某些圖像資源具有相同的名稱。所以在我的情況下,我如何實現/保持**內存優化**? – Vasu 2013-11-14 05:32:51

-9

寫下圖像的完整名稱。

[UIImage imageNamed:@"myFileFromTheBlueFolder.png"]; 

還請注意不區分大小寫的名稱。

23

Kevin對於+[UIImage imageNamed:]提供的內存優化是正確的,但絕對有可能訪問藍色文件夾(文件夾引用)中的圖像。您所要做的就是將文件夾名稱添加到圖像名稱中。例如:

你的資源被組織這樣的:

Icons (blue folder/folder reference) 
    |__camera.png 
    |__checkmark.png 
Shared (yellow folder/xcode group) 
    |__back.png 
    |__logo.png 

您可以訪問像這樣的圖片:

[UIImage imageNamed:@"Icons/camera"]; 
[UIImage imageNamed:@"Icons/checkmark"]; 

[UIImage imageNamed:@"back"]; 
[UIImage imageNamed:@"logo"]; 
+0

UIImage(命名爲:「貓/ \(imageName).png 「) – 2017-11-09 10:08:19

相關問題