我正在使用资产目录,并且可以向资产添加各种大小的应用程序图标。
但是当我尝试以编程方式获取UIImage时,它返回了nil。
UIImage *appIcon = [UIImage imageNamed"AppIcon"];
应用图标的名称为AppIcon
(默认值),实际文件为app-icon-256.png
等。
我还注意到,与普通图像不同,应用程序图标位于目录AppIcon.appiconset
中的“应用程序图标”集中。普通图像位于someimage.imageset
目录中。
答案 0 :(得分:64)
问题是编译后资产目录中的AppIcon没有放在目录中。将其复制到您的应用包中,就像之前一样。
将图标复制到应用包时使用的名称转换为AppIcon<size>.png
,其中大小为40x40
或72x72
您可以通过指定所需应用图标的大小来获取应用图标:
UIImage *appIcon = [UIImage imageNamed:@"AppIcon40x40"];
答案 1 :(得分:1)
现代 >iOS10 的答案是:
复制并粘贴此扩展程序。
extension Bundle {
public var icon: UIImage? {
if let icons = infoDictionary?["CFBundleIcons"] as? [String: Any],
let primary = icons["CFBundlePrimaryIcon"] as? [String: Any],
let files = primary["CFBundleIconFiles"] as? [String],
let icon = files.last
{
return UIImage(named: icon)
}
return nil
}
}
然后就这样调用:
Bundle.main.icon
SwiftUI:
Image(uiImage: Bundle.main.icon ?? UIImage())