问题描述
在使用Xcode15制作图标界面时,我通过Image显示图标:
Image(uiImage: UIImage(named: "AppIcon \(index)") ?? UIImage())
这个代码在Xcode 15中,是可以加载Assets中iOS App Icon图标的。

但是当我在Xcode16中打开项目时,发现无法通过Image获取到iOS App Icon,即使安装到iOS上也是无法显示的。

问题原因
当我下载App Store中的应用,Image仍然可以获取到iOS App Icon。
当我从Git Hub中下载App Store版本,并安装到手机上时,仍然是无法获取iOS App Icon的。
因此,我认为问题可能是Xcode 16 对资源加载机制的更改以及 App Icon 不再作为普通资源提供访问有关。
在 Xcode 15 以前,这种方式可能恰好能加载到一些 AppIcon(如果它们被打包在了 Assets.xcassets 中),但 从 iOS 15 起其实就不推荐这样访问 App Icon,而且:
Xcode 16 进一步加强资源访问控制,App Icon 被编译后只作为图标用途,不再是 UIImage 可访问的资源;
AppIcon 是通过 .appiconset 设置的,不等同于普通 Image Asset,不能用 UIImage(named:) 获取;
UIImage(named:) 只能访问普通的 .imageset 资源,或明确存在于 bundle 中的图片文件。
解决方案
将图标资源作为普通图片拷贝一份。
在 Assets.xcassets 中手动添加一份图标图像。

