iOS更改AppIcon

前言

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

实现

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

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

iOS更改AppIcon_第1张图片
打开plist文件

iOS更改AppIcon_第2张图片
配置plist

具体plist配置如下:

CFBundleIcons

   CFBundlePrimaryIcon
   
       CFBundleIconFiles
       
           AppIcon
       
   
   CFBundleAlternateIcons
   
       icon01
       
           CFBundleIconFiles
           
               icon01
           
       
       icon02
       
           CFBundleIconFiles
           
               icon02
           
           UIPrerenderedIcon
           
       
   

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

iOS更改AppIcon_第3张图片
icons

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

你可能感兴趣的:(iOS更改AppIcon)