前言

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

iOS更改AppIcon相关推荐

  1. [iOS]利用Appicon and Launchimage Maker生成并配置iOSApp的图标和启动页

    一.先来研究下这个软件->Appicon and Launchimage Maker 首先打开你电脑上的AppStore,然后搜索:AppIcon 然后回车: 这里我们先使用免费版的点击下载.( ...

  2. iOS 11 AppIcon不显示问题

    今天更新Xcode 9 后,在运行老项目时遇到一个小坑,就是无论如何都不显示AppIcon,在网络上找到了方法,单并没有解决,其实不是方法的问题,只是有一个小细节要注意,在这里提示一下. 出现这个问题 ...

  3. iOS更改app项目的名字

    在ios中更改app的项目名字是一个麻烦事,不过有时候根据需要我们不得不去修改,正好这两天我也修改了一下我的app名字,就去研究了一下,今天拿来给大家分享. 下面,我就把一个app名字为'西游记'的项 ...

  4. iOS更改状态栏前景色背景色

    1.更改状态栏前景色: 首先在info.plist中View controller-based status bar appearance项设为no. [[UIApplication sharedAp ...

  5. iOS 更改项目名称

    iOS 最新修改项目名称 转发:http://www.cnblogs.com/ljmaque/p/rename.html 在开发的过程中,我们有时候会碰到两个项目相类似,只有一小部分不同的时候,如果是 ...

  6. iOS 更改状态栏/导航栏颜色的几种实用方法

    实际开发需求: 这样代码之后 导航栏颜色白色,但是状态栏没有显示  这样写之后,导航栏和状态栏都是白色 一. 状态栏的设置 iOS上状态栏就是指的最上面的20像素高的部分,状态栏分前后两部分. 前景部 ...

  7. ios更改UITabBarController背景以及选中背景图片的方法

    不多说,直接上方案.   一.背景图片   1.5.0以上版本      UIImage *image = [UIImage imageNamed:@"system_tabbar_bg.pn ...

  8. iOS 更改webView文字颜色丶文字大小丶背景色的方法

    在webView的delegate回调方法-webViewDidFinishLoad:(UIWebView*)webView;中写上一下语句即可 //字体大小 [webView stringByEva ...

  9. 隐藏画质代码_和平精英120帧率代码是什么?隐藏的120帧率代码更改方法技巧

    在和平精英游戏中不少小伙伴们都还不知道120帧率代码是什么,那么和平精英120帧率代码是什么呢?下面小编就为大家带来和平精英120帧率代码介绍,小伙伴们跟小编一起去看看介绍吧. 和平精英120帧率代码 ...

最新文章

  1. zookeeper源码分析之三客户端发送请求流程
  2. python基础教程:类和对象
  3. SDWebImage实现原理(怎么实现图片缓存器)
  4. java hasmoreelements_Java IOException.hasMoreElements方法代码示例
  5. AutoEncoder、RBM、DBM、DBN
  6. Scala in depth 6 Scala的类型系统 中
  7. Selenium自动化测试-5.脚本录制神器Katalon Recorder
  8. 以未来式计算机为题目的作文,一般将来时:my travel plan为题作文
  9. WFDB软件包简介——ECG数据在Matlab下的读取/显示方法
  10. html鼠标自动点击代码,网上学习鼠标10分钟自动点击 按键精灵使用设置方法 脚本编辑...
  11. matlab电机仿真 pdf,现代永磁同步电机控制原理及MATLAB仿真 pdf+随书仿真模型
  12. c语言 步进电机 程序,步进电机加速启动C语言程序
  13. U盘硬盘文件提示“文件或目录损坏且无法读取”问题解决
  14. android 源码编译 模拟器emulator启动
  15. 用moment将时间戳格式化为周几 几月几日
  16. 跑腿小程序需要服务器吗,小程序设置流程
  17. Go中sync 包的 Once 使用
  18. python柱状图纵轴刻度_Python数据分析:Matplotlib
  19. river歌曲表达的意思_River是什么意思
  20. 什么样的工作轻松又赚钱?真的有这样的工作吗?

热门文章

  1. SSL之CA证书颁发机构安装图文详解
  2. Improve Performance and Reduce Memory with PVRTC Textures and Cocos2d
  3. 如何在ToolBar中显示文字和图标,自定义图标大小,并和MenuItem关联
  4. GARFIELD@04-09-2005
  5. c#中什么情况下用(int)什么情况下用Convert.ToInt32
  6. 生成静态文件的新闻系统核心代码
  7. zip 的压缩原理与实现
  8. ASP.NET超凡的代码控制
  9. 必要时调整应用程序每个辅助进程的线程数
  10. 【GStreamer】gstreamer工具详解之:gst-launch-1.0