iOS更改AppIcon

前言

iOS 10.3出了挺多的新功能,其中有一个就是可以自定义更改AppIcon。这个功能以前我们只能在苹果的时钟上面看出来。但是一直没有对外开放。现在开放出来,也算是一种突破。

实现

苹果在iOS 10.3中,多了一个setAlternateIconName:completionHandler:方法用于更改AppIcon。

1、我们先创建一个工程,然后在Info.plist文件里面新建一个CFBundleIcons,然后在里面配置可替换的AppIcon。

具体plist配置如下:

<key>CFBundleIcons</key>
<dict>
   <key>CFBundlePrimaryIcon</key>
   <dict>
       <key>CFBundleIconFiles</key>
       <array>
           <string>AppIcon</string>
       </array>
   </dict>
   <key>CFBundleAlternateIcons</key>
   <dict>
       <key>icon01</key>
       <dict>
           <key>CFBundleIconFiles</key>
           <array>
               <string>icon01</string>
           </array>
       </dict>
       <key>icon02</key>
       <dict>
           <key>CFBundleIconFiles</key>
           <array>
               <string>icon02</string>
           </array>
           <key>UIPrerenderedIcon</key>
           <false/>
       </dict>
   </dict>
</dict>
复制代码

2、将所有要替换的AppIcon加进工程里面,这里需要注意的是,不能放在Assets.xcassets里面,否则无效。

3、代码实现:

//替換icon
- (void)changeIconButtonClick:(NSUInteger)index {
   if ([UIApplication sharedApplication].supportsAlternateIcons) {
       NSLog(@"你可以更換icon");
       [[UIApplication sharedApplication] setAlternateIconName:_iconArr[index] completionHandler:^(NSError * _Nullable error) {
           if (!error) {
               NSLog(@"成功更換成%@",_iconArr[index]);
           }else{
               NSLog(@"error:%@",error);
           }
       }];
   } else {
       NSLog(@"非常抱歉,你不能更換icon");
       return;
   }
}
    
//還原icon
- (void)backToPrimaryIconAction:(id)sender {
   if ([UIApplication sharedApplication].alternateIconName != nil) {
       //已經被替換掉了圖標
       [[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) {
           if (!error) {
               NSLog(@"成功還原圖標");
           } else {
               NSLog(@"error:%@",error);
           }
       }];
   }
}
复制代码

最终效果如下

附上写好的Demo


再一次感谢您花费时间阅读这篇文章!

微博: @Danny_吕昌辉
博客: SuperDanny

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值