iOS 18中如何获取高分辨率AppIcon(UIImage)?
iOS 18下获取1024x1024高分辨率AppIcon的问题
在iOS 18之前,以下代码可正常获取1024x1024的AppIcon:
let icons = Bundle.main.infoDictionary!["CFBundleIcons"] as! [String: Any] let primaryIcon = icons["CFBundlePrimaryIcon"] as! [String: Any] let iconName = primaryIcon["CFBundleIconName"] as! String return UIImage(named: iconName)!
其中iconName为"AppIcon",可返回1024x1024的图片。但使用iOS 18基础SDK时,UIImage(named: iconName)返回nil,导致应用崩溃。
问题细节
- 使用iOS 17基础SDK构建时,在iOS 17和iOS 18上均可正常运行;
- 使用iOS 18基础SDK构建(部署目标为iOS 17)时,在iOS 17和iOS 18上均会崩溃。
已尝试的方案
改用CFBundleIconFiles的代码如下:
let icons = Bundle.main.infoDictionary!["CFBundleIcons"] as! [String: Any] let primaryIcon = icons["CFBundlePrimaryIcon"] as! [String: Any] let iconFiles = primaryIcon["CFBundleIconFiles"] as! [String] return UIImage(named: iconFiles[0])!
但iconFiles[0]返回"AppIcon60x60",对应的是120x120的低分辨率图片,无法满足需求。
排查情况
- 应用使用资源目录
Assets.xcassets->AppIcon,其中包含1024x1024的icon1024.png; - 目标设置的General标签中已将AppIcon设为应用图标;
- 生成的.app产物中包含
AppIcon60x60@2x.png、AppIcon76x76@2x~ipad.png和Assets.car,用Asset Catelog Tinker查看Assets.car可见icon1024.png; - 用iOS17和iOS18 SDK构建的.app结构一致,但iOS18 SDK下调用
UIImage(named: "AppIcon")无法加载Assets.car中的icon1024.png,直接调用UIImage(named: "icon1024")等也返回nil。
现寻求iOS 18下获取1024x1024高分辨率AppIcon的解决方案。
内容的提问来源于stack exchange,提问作者OMGPOP
相关产品推荐
相关产品推荐

