今天,在使用'破壳日'的时候,无意中发现APP中有更换icon这一个功能.如下图所示

程序员的好奇心使我度娘了一番,找到了实现的方法,做下记录,以便自己后期查阅.实现步骤如下:
1.新建一个工程,并导入你所需要的icon的logo.(略)
2.配置plist文件配置,添加Icon files (iOS 5)类型为Dictionary

3.打开点开Icon files (iOS 5),设置Primary Icon 里面的图片为AppIcon默认图片为1.png

4.在Icon files (iOS 5)里面创建一个CFBundleAlternateIcons,类型为Dictionary

5.打开CFBundleAlternateIcons,分别添加icon1,icon2,icon3,它们对应的本地图片名字是1,2,3。添加时数据类型对应一至.

6.配置完之后,对应VC里面的代码如下:
class ViewController: UIViewController {
@IBAction func icon01Click(_ sender: UIButton) {
changeIconImage(name: "icon1")
}
@IBAction func icon02Click(_ sender: UIButton) {
changeIconImage(name: "icon2")
}
@IBAction func icon03Click(_ sender: UIButton) {
changeIconImage(name: "icon3")
}
override func viewDidLoad() {
super.viewDidLoad()
}
fileprivate func changeIconImage(name : String) {
if UIApplication.shared.supportsAlternateIcons { //来判断是否支持换应用图标
//setAlertnateIconName方法有二个参数
//第一个参数是要换图标的名字(此名字不是图片的原始名字),如果写nil,系统默认是最初图标名字
//第二个参数是方法执行的回调
UIApplication.shared.setAlternateIconName(name, completionHandler: { (error) in
if (error != nil) {
print(error ?? "失败")
} else {
print("成功")
}
})
}
}
}
运行代码,效果如下:

附Demo地址.
网友评论