iOS - 让APP动态更改icon
话不多说,直接进主题,注意几点。
1. 首先我们要知道更改APP的icon, 需要添加Info.plist 中的 Icon files (iOS 5) -> CFBundleAlternateIcons , 给CFBundleAlternateIcons 增加一些内容,这些内容就是你 icon 的图片名字。
2. 其次我们要知道,如果不额外处理,那么我们在更改icon 的时候系统会弹出提示框,告诉用户icon 已经更改, 这样的用户体验是不好的,所以一般都会增加扩展后静默更改icon。
3. 这种动态更改是需要提前为 图片 和 Info.plist 做好准备的,当然如果有特殊需求可以想想办法通过额外的逻辑完成。
4. 我们核心对象是‘UIAlternateApplicationIcons’ ,我会在后面上传一段Gif 和 三张截图,为你介绍这个功能。
下面是相关使用和扩展的代码 - 我知道有的小伙伴比较懒,直接复制就好
1.
#import "ViewController.h"@interface ViewController ()
@property (nonatomic, copy)NSString *str_IconName;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];_str_IconName = @"F";// Do any additional setup after loading the view.
}- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{if (![[UIApplication sharedApplication] supportsAlternateIcons]) {return;}if ([_str_IconName isEqualToString:@"F"]) {_str_IconName = @"S";}else{_str_IconName = @"F";}[[UIApplication sharedApplication] setAlternateIconName:_str_IconName completionHandler:^(NSError * _Nullable error) {if (error) {NSLog(@"更换app图标发生错误了 : %@",error);}}];
}@end
2.
#import "UIViewController+Present.h"
#import <objc/runtime.h>@implementation UIViewController (Present)+ (void)load {static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{Method presentM = class_getInstanceMethod(self.class, @selector(presentViewController:animated:completion:));Method presentSwizzlingM = class_getInstanceMethod(self.class, @selector(dy_presentViewController:animated:completion:));// 交换方法实现method_exchangeImplementations(presentM, presentSwizzlingM);});
}
- (void)dy_presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion {if ([viewControllerToPresent isKindOfClass:[UIAlertController class]]) {
// NSLog(@"title : %@",((UIAlertController *)viewControllerToPresent).title);
// NSLog(@"message : %@",((UIAlertController *)viewControllerToPresent).message);//这里只是判断了 如果UIAlertController 中title 和message 都没有信息 那么返回空,这样就不会弹框,当然你可以判断你需要的。UIAlertController *alertController = (UIAlertController *)viewControllerToPresent;if (alertController.title == nil && alertController.message == nil) {NSLog(@"iconName = %@",[[UIApplication sharedApplication] alternateIconName]);return;} else {[self dy_presentViewController:viewControllerToPresent animated:flag completion:completion];return;}}[self dy_presentViewController:viewControllerToPresent animated:flag completion:completion];
}@end
以上就是让APP动态更改icon 的相关内容。
感谢学习,学以致用更感谢~
iOS - 让APP动态更改icon相关推荐
- iOS动态修改app 图标(icon)
作者:流火绯瞳 链接:https://www.jianshu.com/p/69313970d0e7 來源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处. Demo地址 ht ...
- 苹果不更新APP动态更换节假日Logo
苹果不更新APP动态更换节假日Logo 动态修改app的图标,就是在不重新安装app的情况下,可以修改当前的icon图标在 iOS 10.3之后,苹果官方提供了相关的API来实现这个功能方法实现很简单 ...
- 手把手教你制作一款iOS越狱App,伪装微信位置
说明 缘由 严重声明 概念 越狱的原理 iOS 目录层级结构 iOS 程序类型 准备工作 硬件设备 辅助软件 Mac 需要的工具 iOS 需要使用的辅助开发工具 逆向过程 静态分析 给App砸壳 使用 ...
- 【Android】动态更新Icon
动态更改图标主要用到activity-alias和PackageManager的setComponentEnabledSetting方法.具体步骤如下: 1.在AndroidManifest.xml中 ...
- 动态更改屏幕方向LANDSCAPE与PORTRAIT 转
动态更改屏幕方向--LANDSCAPE与PORTRAIT package irdc.ex05_22; import android.app.Activity; import android.conte ...
- Android动态修改icon
Android动态修改icon 南京证券项目最近的需求之一,在某一时间时应用图标icon显示4.0icon,春节时显示春节icon,当春节过后,app需还原为默认icon,也就是有三个icon需要变化 ...
- iOS 的 APP 在系统中如何适配不同的屏幕的尺寸
iOS 的 APP 在系统中如何适配不同的屏幕的尺寸 标签: 2007年,初代iPhone发布,屏幕的宽高是 320 x 480 像素.下文也是按照宽度,高度的顺序排列.这个分辨率一直到iPhone ...
- iOS 的 APP 如何适应 iPhone 5s/6/6Plus 三种屏幕的尺寸
iOS 的 APP 如何适应 iPhone 5s/6/6Plus 三种屏幕的尺寸? 时间 2014-10-21 19:10:29 鸟哥笔记 原文 http://www.niaogebiji.co ...
- ios 开发中 动态库 与静态库的区别
使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...
最新文章
- 例题2-1 在屏幕上显示一个短句。
- oracle tuning 工具
- Re:从 0 开始的微服务架构--(四)如何保障微服务架构下的数据一致性--转
- 轻松玩转jquery。
- CAD数据与ArcGIS数据的互转换(转载)
- Node.js meitulu图片批量下载爬虫1.051
- 最短路径——Dijkstra算法扩展(hdu2066,poj1062)
- java oo原则_javaOO11-12:面向对象的设计原则、线程
- Magicodes.Admin.Core开源框架总体介绍
- HttpClient的使用方法
- XQuery FLWOR 表达式
- VC6.0(VC++6.0)下载地址和安装教程(图解)
- 2021L3HCTF luuuuua Writeup
- 【华为机试真题 JAVA】最大股票收益-100
- 用防火墙自动拦截攻击IP
- 三菱PLC编程与案例精讲之ST语言
- SANY北京地区笔试题(研发类岗位)
- 南卡和三星哪款蓝牙耳机音质好些?高颜值且音质好的蓝牙耳机测评
- CDH数仓项目(一) —— CDH安装部署搭建详细流程
- FMT开源自驾仪 | FMT固定翼飞控系统首次测试