iOS app更换App Logo

释放双眼,带上耳机,听听看~!

在iOS 10.3之后,苹果官方提供了相关的API来实现这个功能,主要是下面这几个方法:

API

extension UIApplication {
// If false, alternate icons are not supported for the current process.
@available(iOS 10.3, *)
open var supportsAlternateIcons: Bool { get }
// Pass `nil` to use the primary application icon. The completion handler will be invoked asynchronously on an arbitrary background queue; be sure to dispatch back to the main queue before doing any further UI work.
@available(iOS 10.3, *)
open func setAlternateIconName(_ alternateIconName: String?, completionHandler: ((Error?) -> Void)? = nil)
// If `nil`, the primary application icon is being used.
@available(iOS 10.3, *)
open var alternateIconName: String? { get }
}

方法很简单,但是使用之前需要进行一些配置:

第一步:配置icon

添加图片icon
动态修改的icon不能放在 Assets.xcassets 里,但是正常的主icon还是可以在这里设置的,也可以按下面的方法来设置;
首先,把需要修改的icon放在一个文件夹内:

 

icon

 

也可以把需要的logo文件全部放进去

第二步:配置info.plist

在info.plist中右键 -> Add Row :
输入Icon… 会有提示,选择Icon files(iOS 5)

 

Icon files(iOS 5)
//这里的Icon files(iOS 5)是个字典,其中可包含的Key值有
CFBundlePrimaryIcon -> Primary Icon
CFBundleAlternateIcons
UINewsstandIcon -> Newsstand Icon

这里的Primary Icon是设置app的主icon,可以在这里的Icon files数组内添加,有多个的话,依次添加,也可以这里不用填写,直接在Assets.xcassets 里配置;

下面的Newsstand Icon,暂时用不到,不用管,也可以删除。
在 Icon files(iOS 5)内添加一个Key: CFBundleAlternateIcons ,类型为字典,在这个字典里配置我们所有需要动态修改的icon:键为icon的名称,值为一个字典(这个字典里包含两个键:CFBundleIconFiles,其值类型为Array,内容为icon的名称;UIPrerenderedIcon,其值类型为bool,内容为NO,也可以不加此key)

 

info.plist

 

这里的CFBundleIconFiles里面可以放多个尺寸的文件

第三步:编写代码
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
changeLogo(name: "rain")
}
func changeLogo(name:String) -> Void {
if #available(iOS 10.3, *) {
if UIApplication.shared.supportsAlternateIcons {
UIApplication.shared.setAlternateIconName(name) { (error) in
if (error != nil) {
print("失败")
} else {
print("成功")
}
}
}
} else {
// Fallback on earlier versions
}
}

这样每次更换会有一个提示框,如下

 

提示框

人已赞赏
iOS文章

iOS 长按复制功能

2020-2-13 22:25:38

iOS文章

IOS开发中手风琴特效无法正常工作的问题

2020-2-14 4:08:27

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索