我想在我的应用中显示应用图标。该图标位于默认资产目录(Images.xcassets
)中。
你如何加载它?我尝试了以下内容,他们都返回nil
:
image = [UIImage imageNamed:@"AppIcon"];
image = [UIImage imageNamed:@"icon"];
image = [UIImage imageNamed:@"icon-76"];
image = [UIImage imageNamed:@"icon-60"];
资产目录中的其他图像按预期工作。
答案 0 :(得分:23)
通过检查捆绑包,我发现图标图像被重命名为:
AppIcon76x76~ipad.png
AppIcon76x76@2x~ipad.png
AppIcon60x60@2x.png
等等。
因此,使用[UIImage imageNamed:@"AppIcon76x76"]
或类似作品。
这是在某处记录的吗?
答案 1 :(得分:15)
我建议通过检查Info.plist
来检索图标网址,因为不能保证图标文件的名称如何命名:
NSDictionary *infoPlist = [[NSBundle mainBundle] infoDictionary];
NSString *icon = [[infoPlist valueForKeyPath:@"CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles"] lastObject];
imageView.image = [UIImage imageNamed:icon];
在这种情况下,我们将获取CFBundleIconFiles数组的最后一个图像URL。它具有最大的分辨率。如果您需要较小的分辨率,请更改此选项。
答案 2 :(得分:2)
以下是Ortwin的答案,一种 Swift 4 方法:
func getHighResolutionAppIconName() -> String? {
guard let infoPlist = Bundle.main.infoDictionary else { return nil }
guard let bundleIcons = infoPlist["CFBundleIcons"] as? NSDictionary else { return nil }
guard let bundlePrimaryIcon = bundleIcons["CFBundlePrimaryIcon"] as? NSDictionary else { return nil }
guard let bundleIconFiles = bundlePrimaryIcon["CFBundleIconFiles"] as? NSArray else { return nil }
guard let appIcon = bundleIconFiles.lastObject as? String else { return nil }
return appIcon
}
然后可以按以下方式使用:
let imageName = getHighResolutionAppIconName()
myImageView.image = UIImage(named: imageName)