2013-10-25 277 views
19

我想在我的應用程序內顯示應用程序圖標。該圖標位於默認資產目錄中(Images.xcassets)。從xcassets加載應用程序圖標

你如何加載它?我嘗試以下,他們都返回nil

image = [UIImage imageNamed:@"AppIcon"]; 
image = [UIImage imageNamed:@"icon"]; 
image = [UIImage imageNamed:@"icon-76"]; 
image = [UIImage imageNamed:@"icon-60"]; 

在資產目錄工作的其他圖像作爲預期。

回答

22

通過檢查包,我發現圖標圖像被更名爲:

AppIcon76x76~ipad.png 
[email protected]~ipad.png 
[email protected] 

等。

因此,使用[UIImage imageNamed:@"AppIcon76x76"]或類似的作品。

是否記錄在某處?

NSDictionary *infoPlist = [[NSBundle mainBundle] infoDictionary]; 
NSString *icon = [[infoPlist valueForKeyPath:@"CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles"] lastObject]; 
imageView.image = [UIImage imageNamed:icon]; 

在這種情況下,我們獲取的CFBundleIconFiles數組的最後一個圖像URL:

+1

似乎有文檔在這裏:https://developer.apple.com/library/ios/qa/qa1686/_index.html –

+1

這是很危險的。蘋果公司可能會改變命名約定,將來你的應用會中斷。我的建議是單獨複製image.xcasset中的另一個圖標。 – GeneCode

13

我建議通過檢查Info.plist因爲沒有保證的圖標文件命名方式檢索圖標的網址。它有最大的分辨率。如果您需要較小的分辨率,請更改此項。

+0

有趣的建議。如果'AppIcon'名稱是公共API,確認是否很好。 – hpique

+1

在我的情況下,圖標命名不同。所以我不會純粹依靠這個名字。 –

+1

爲什麼不是簡單的在設置了「圖標」之後呢? imageView.image = [UIImage imageNamed:icon]; –