(0042) iOS 开发之iOS10.3新特性:如何动态更换APP图标

2023-12-03 20:48

本文主要是介绍(0042) iOS 开发之iOS10.3新特性:如何动态更换APP图标,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

iOS新特性: iOS10.3教你如何动态更换APP图标?

1、iOS 10.3 开放了更换 app 图标的 API,核心方法是下面这个:

  1. [[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(  
  2.   
  3.  }];  

这是官方文档,但是你还需要在 info.plist 里面填一些东西才能让它起作用,这部分官方注释内容在这里。



2、 info.plist 如何填写呢?一时可能搞不清楚如何操作,下面做个实例:







3、具体如下:



[objc] view plain copy
print ? 在CODE上查看代码片 派生到我的代码片
  1. <key>CFBundleIcons</key>  
  2.     <dict>  
  3.         <key>CFBundleAlternateIcons</key>  
  4.         <dict>  
  5.             <key>newIcon</key>  
  6.             <dict>  
  7.                 <key>CFBundleIconFiles</key>  
  8.                 <array>  
  9.                     <string>newIcon</string>  
  10.                 </array>  
  11.                 <key>UIPrerenderedIcon</key>  
  12.                 <false/>  
  13.             </dict>  
  14.         </dict>  
  15.         <key>CFBundlePrimaryIcon</key>  
  16.         <dict>  
  17.             <key>CFBundleIconFiles</key>  
  18.             <array>  
  19.                 <string>Icon60X60</string>  
  20.             </array>  
  21.         </dict>  
  22.     </dict>  
<key>CFBundleIcons</key><dict><key>CFBundleAlternateIcons</key><dict><key>newIcon</key><dict><key>CFBundleIconFiles</key><array><string>newIcon</string></array><key>UIPrerenderedIcon</key><false/></dict></dict><key>CFBundlePrimaryIcon</key><dict><key>CFBundleIconFiles</key><array><string>Icon60X60</string></array></dict></dict>

如图,Primary Icon 字段写为 Icon60X60 是因为这里 xcassets 里面我只导入了 60pt@2x 和 60pt@3x 的图片资源,这里选为 60 是因为对于 iPhone,60pt 的图片资源图标所需最高质量,更低分辨率的版本系统会自动压缩以展示。

newIcon 是我的用于替换原生图标的图片资源。文件名需要和 info.plist 中保持一致(注意 info.plist 中用到了两次 "newIcon"),同时这也是你在代码中设置图标时,需要给 API 传入的参数。同样是 60pt@2x 和 60pt@3x 的图片资源,文件不通过 Assets.xcassets 添加进来,而是直接放到目录中。

如果你需要支持 iPad,建议这里使用 83.5pt(iPad Pro)的图片资源。另外还有些其他关于在 iPad 上替换图标的注意事项,在这里有说明,注意我们这里在 info.plist 里面所用的 key 是 CFBundleIcons,还有另外一个 key 是 CFBundleIcons~ipad

4、替换图标部分的代码:

[objc] view plain copy
print ? 在CODE上查看代码片 派生到我的代码片
  1. - (void)changeAppIcon  
  2. {  
  3.     if ([UIApplication sharedApplication].supportsAlternateIcons) {  
  4.         NSLog(@"you can change this app's icon");  
  5.     }else{  
  6.         NSLog(@"you can not change this app's icon");  
  7.         return;  
  8.     }  
  9.       
  10.     NSString *iconName = [[UIApplication sharedApplication] alternateIconName];  
  11.       
  12.     if (iconName) {  
  13.         // change to primary icon  
  14.         [[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) {  
  15.             if (error) {  
  16.                 NSLog(@"set icon error: %@",error);  
  17.             }  
  18.             NSLog(@"The alternate icon's name is %@",iconName);  
  19.         }];  
  20.     }else{  
  21.         // change to alterante icon  
  22.         [[UIApplication sharedApplication] setAlternateIconName:@"newIcon" completionHandler:^(NSError * _Nullable error) {  
  23.             if (error) {  
  24.                 NSLog(@"set icon error: %@",error);  
  25.             }  
  26.             NSLog(@"The alternate icon's name is %@",iconName);  
  27.         }];  
  28.     }  
  29. }  
- (void)changeAppIcon
{if ([UIApplication sharedApplication].supportsAlternateIcons) {NSLog(@"you can change this app's icon");}else{NSLog(@"you can not change this app's icon");return;}NSString *iconName = [[UIApplication sharedApplication] alternateIconName];if (iconName) {// change to primary icon[[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) {if (error) {NSLog(@"set icon error: %@",error);}NSLog(@"The alternate icon's name is %@",iconName);}];}else{// change to alterante icon[[UIApplication sharedApplication] setAlternateIconName:@"newIcon" completionHandler:^(NSError * _Nullable error) {if (error) {NSLog(@"set icon error: %@",error);}NSLog(@"The alternate icon's name is %@",iconName);}];}
}

5、最终效果如下:



Demo:GitHub  喜欢记得star一下哦!

这篇关于(0042) iOS 开发之iOS10.3新特性:如何动态更换APP图标的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/450825

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。