iOS 动态修改app图标

在开发过程中,我们有时候会遇到对线上的项目进行更改icon的需求.
譬如,明天双十一抢购,要做一个活动图标.后天什么节日的,要做一个节日图标来应景一下.那么怎么去实现呢?

在苹果官方文档中有相应的API方法去更换Icon.

- (void)setAlternateIconName:(NSString *)alternateIconName 
           completionHandler:(void (^)(NSError *error))completionHandler;

参数:

alternateIconName 为要替换的icon名字,(在这里注意一下,icon文件不要设置在Assets 里面,新建一个目录,里面存放即可).
1.png

completionHandler 为响应的回调处理

要使用结果执行的处理程序。在尝试更改应用程序的图标后,系统通过调用处理程序报告结果。(处理器是在uikit提供的队列上执行的,不一定是在应用程序的主队列上。)处理程序没有返回值,并接受以下参数:

error 处理返回的错误信息.

到这里就已经了解如何完成任务,下面就让我们跟着实践一下.

首先导入所要更换的icon,
然后修改infoplist文件icon api,新建一个key为 Icon files (iOS 5)的字典类型item,输入icon就可选择.

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

F7E956018A8955B1058ED59AF361FA8E.png

在 Icon files(iOS 5)内添加一个Key: CFBundleAlternateIcons ,类型为字典,

在这个字典里配置我们所有需要动态修改的icon:键为icon的名称,值为一个字典(这个字典里包含两个键:CFBundleIconFiles,其值类型为Array,内容为icon的名称;UIPrerenderedIcon,其值类型为bool,内容为NO,也可以不加此key)
5A075B0519FFAABB303C33F62B44B45D.png

到这里配置部分就完成了,

代码实现就更简单了


CDBC225A-3979-4015-826E-B008EA963E90.png

然后就完成了.
这里有一个小小的问题:就是在修改icon的时候会出来一个系统弹框.


C59B6F8D-CDA3-4923-A978-3196FADC704E.png

如果不想用户操作的话,可以利用runtime动态替换方法去修改.


8F1C224B-1F45-419A-AEEA-825DA36829BB.png

到这里就完美的完成的.

附上本文icon修改demo,欢迎各位大大指点与批评.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 动态修改app的图标,就是在不重新安装app的情况下,可以修改当前的icon图标;在某些情况下,是有这个需求的;例...
    流火绯瞳阅读 62,641评论 58 169
  • 在微博上看到了 @安财小小生分享的iOS 10.3新增功能:通过API动态修改APP的图标,自己深入了解了一下。 ...
    Ennnnnn7阅读 9,586评论 18 32
  • 在iOS10.3以后UIApplication多了个分类UIAlternateApplicationIcons 1...
    crazyfox阅读 809评论 0 0
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,019评论 3 119
  • 我自横刀立马坐江北 不知缘何音容觅南风 眼望情仇爱恨重久久 苏州孤依舟车顿马声 雨调歌头笑喜酒断肠
    大大的王帅帅阅读 223评论 0 2