iOS 应用内更换App图标
1、新建Xcode测试工程,将需要的图标文件导入,在这里导入三套图片,简单起见命名为1,2,3,分别为60的2x和3x图片,如下:

2、在官方文档的解释是CFBundleAlternateIcons字典下需要增加CFBundleIconFiles与UIPrerenderedIcon两个键对应新图标,具体的文档截图与大致翻译如下:



3、选择Info.plist,在其下新增Icon files (iOS 5)字典,根据文档加入CFBundleAlternateIcons字典,具体如下:
<dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>2</key>
<dict>
<key>UIPrerenderedIcon</key>
<false/>
<key>CFBundleIconFiles</key>
<array>
<string>2</string>
</array>
</dict>
<key>3</key>
<dict>
<key>UIPrerenderedIcon</key>
<false/>
<key>CFBundleIconFiles</key>
<array>
<string>3</string>
</array>
</dict>
</dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>1</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
</dict>

4、Icon files (iOS 5)下的Primary Icon表示初始图片设置,在这里设置为图片1,如下:

5、图标的更改是放在按钮事件中响应的,点击界面上的按钮完成图标的更改,具体实现代码如下:
if #available(iOS 10.3, *) {
if UIApplication.shared.supportsAlternateIcons {
UIApplication.shared.setAlternateIconName("2", completionHandler: {(error) in
if error != nil {
print(error)
}
})
}
}

6、编译运行下项目,然后回到模拟器的首页,可以看到模拟器当前项目中显示的图标为图片1,如下:

7、回到App中,点击放置的按钮进行图标更换,更换成功会弹出提示框,点击ok,然后回到模拟器首页可以看到App图标已经更换掉,如下:


