App更换图标
2024-01-08 13:46:52
App更换图标
京东淘宝的每到618或者双十一的时候,app图标都会贴合相关主题更换一下,但是那个时间段app也没有升级,所以说肯定是有一个配置能够更改app的图标。
查了一些文档,发现了如下的方法。
准备图片
准备120x120和180x180两种尺寸的图。分别命名为icon@2x.png和icon@3x.png。
然后把图片放置到项目的一个目录下,注意不是放到 image assets里边。
修改Info.plist
打开项目的Info.plist,在文件上右键,open as source code,添加如下代码
<key>CFBundleIcons</key>
<dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>NewAppIcon</key> // 这个是函数需要用到的参数
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>icon</string> // 这个地方的icon就是文件名
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
</dict>
</dict>
添加修改图标函数
添加如下代码进行更新。
if UIApplication.shared.supportsAlternateIcons {
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
UIApplication.shared.setAlternateIconName("NewAppIcon") { error in
if let error = error {
print(error.localizedDescription)
} else {
print("Success!")
}
}
}
}
更新完成之后会发现弹出来了一个提示窗,这样体验就不太好了。因此需要稍微修改一下。
增加一下方法。
func setApplicationIconName(_ iconName: String?) {
if UIApplication.shared.responds(to: #selector(getter: UIApplication.supportsAlternateIcons)) && UIApplication.shared.supportsAlternateIcons {
typealias setAlternateIconName = @convention(c) (NSObject, Selector, NSString?, @escaping (NSError) -> ()) -> ()
let selectorString = "_setAlternateIconName:completionHandler:"
let selector = NSSelectorFromString(selectorString)
let imp = UIApplication.shared.method(for: selector)
let method = unsafeBitCast(imp, to: setAlternateIconName.self)
method(UIApplication.shared, selector, iconName as NSString?, { _ in })
}
}
之后调用的时候使用以上方法。
if UIApplication.shared.supportsAlternateIcons {
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
self.setApplicationIconName(nil)
}
}
这样就能默默的换icon了。
文章来源:https://blog.csdn.net/xo19882011/article/details/135454649
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!