分两种实现方式:1.静态的在plist文件里面添加,2.在AppDelegate里通过代理使用代码来动态实现。

一,静态实现

静态标签是我们在项目的配置plist文件中配置的标签,在用户安装程序后就可以使用,并且排序会在动态标签的前面。 
首先,在info.plist文件中添加如下键值(我在测试的时候,系统并没有提示,只能手打上去):
先添加了一个UIApplicationShortcutItems的数组,这个数组中添加的元素就是对应的静态标签,在每个标签中我们需要添加一些设置的键值:
必填项(下面两个键值是必须设置的): 
UIApplicationShortcutItemType  这个键值设置一个快捷通道类型的字符串
UIApplicationShortcutItemTitle  这个键值设置标签的标题
选填项(下面这些键值不是必须设置的) :
UIApplicationShortcutItemSubtitle  设置标签的副标题
UIApplicationShortcutItemIconType  设置标签Icon类型
UIApplicationShortcutItemIconFile   设置标签的Icon文件
UIApplicationShortcutItemUserInfo  设置信息字典(用于传值)

二,动态实现

动态标签是我们在程序中,通过代码添加的,与之相关的类,主要有三个:
UIApplicationShortcutItem  创建3DTouch标签的类
UIMutableApplicationShortcutItem 创建可变的3DTouch标签的类
UIApplicationShortcutIcon 创建标签中图片Icon的类
 

1.在AppDelegate的代理方法里实现;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     [ self set3DTouch];

- (void)set3DTouch{
    UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"图片1"];
    UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"图片2"];
    UIApplicationShortcutIcon *icon3 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"图片3"];
    UIMutableApplicationShortcutItem *item1 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"UITouchText.1" localizedTitle:@"足迹" localizedSubtitle:nil icon:icon1 userInfo:nil];
    UIMutableApplicationShortcutItem *item2 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"UITouchText.2" localizedTitle:@"发现" localizedSubtitle:nil icon:icon2 userInfo:nil];
    UIMutableApplicationShortcutItem *item3 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"UITouchText.3" localizedTitle:@"我" localizedSubtitle:nil icon:icon3 userInfo:nil];
    NSArray *arr = @[item1, item2, item3];
    [UIApplication sharedApplication].shortcutItems = arr;
      
}

2.当我们通过标签进入app时,就会在appDelegate中调用这样一个回调,我们可以获取shortcutItem的信息进行相关逻辑操作

- (void)application:(UIApplication *)application performActionForShortcutItem:(nonnull UIApplicationShortcutItem *)shortcutItem completionHandler:(nonnull void (^)(BOOL))completionHandler{
    if ([shortcutItem.type isEqualToString:@"UITouchText.1"]) {
        NSLog(@"编写跳转到的ViewController");
    }else if ([shortcutItem.type isEqualToString:@"UITouchText.2"]){
    }else if ([shortcutItem.type isEqualToString:@"UITouchText.3"]){
    }
}

这里有一点需要注意:我们在app的入口函数:
- ( BOOL )application:( UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions;
也需要进行一下判断,在launchOptions中有UIApplicationLaunchOptionsShortcutItemKey这样一个键,通过它,我们可以区别是否是从标签进入的app,如果是则处理结束逻辑后,返回NO,防止处理逻辑被反复回调。
几点注意:
1、快捷标签最多可以创建四个,包括静态的和动态的。
2、每个标签的题目和icon最多两行,多出的会用...省略

3DTouch简单实现相关推荐

  1. 详解3DTouch集成篇

    欢迎大家一起交流 QQ群 139852091 本文主要讲解3DTouch各种场景下的集成,开发主屏幕应用icon上的快捷选项标签(Home Screen Quick Actions),静态设置 UIA ...

  2. 3DTouch的简单使用

    北京时间2015年9月10日凌晨,Apple在美国旧金山比尔格拉汉姆公民大礼堂(Bill Graham Civic Auditorium)召开新品发布会.本次发布会带来了3D Touch技术. 本文主 ...

  3. 怎么让手机变成震动器_详解iPhone 手机标配的两种技术:线性马达和3Dtouch,有多好用?...

    iPhone手机广受大家喜欢不是没有道理的,XR取消了3Dtouch引来众多玩家的不满,那么,iPhone手机有哪些让你感觉舒服的技术呢?今天机哥就先来说一说线性马达和3Dtouch. 我们在玩手机时 ...

  4. 3DTouch桌面快捷方式

    3DTouch是iOS9,iPhone6s上新加的功能,之前只是一直有了解,但是由于设备的原因并没有很好的研究,后来购入一台6S所以就迫不及待的尝试了一下. 申明Quick Action有两种方式:静 ...

  5. iOS 3DTouch 开发

    看了网上很多贴,但是感觉对于有些人来说太过婉转了,所以我就来个简单粗暴的 1,设置静态标签 首先要在info.plist 里面添加键值 UIApplicationShortcutItemType  这 ...

  6. iOS中3DTouch的使用

    苹果是在iphone6s开始加入的3DTouch功能.也就是说是ios9开始加入的3DTouch.3DTouch也就是根据你手按压的力度大小来触发的.3DTouch具体有两种表现形式.第一种是在Lau ...

  7. Android吃鸡 3dtouch,绝地求生刺激战场3Dtouch怎么用 刺激战场3Dtouch吃鸡技巧详解

    腾讯光子&PUBG联合出品,正版<绝地求生>手游!百人空投,荒岛求生!虚幻4引擎研发,次世代完美画质,重现端游视听感受:8000Mx8000M正版... 类型:飞行射击 大小:11 ...

  8. 苹果手机3D-Touch这个功能,其实是吃鸡神器!

    苹果手机3D-Touch这个功能其实很实用,为什么大家觉得沒用呢?今天给大家分享一下它的原理和实用性. 2015年9月10号iPhone在6S的发布会上正式推出3D Touch .3D Touch此操 ...

  9. 3DTouch的分享

    众所周知,苹果公司每年9月份都会发布一款新的iPhone设备,而每代的iPhone都会在硬件和技术上有所升级. 随着iPhone6S.iPhone6SPlus 的发布,一项新的技术也出现在世人的视野中 ...

最新文章

  1. 随机生成6位图片验证码
  2. 史上最全数据结构算法之递归系列学习,建议收藏!
  3. linux shell awk 中括号 方括号 分割 []
  4. 系统调用003 系统服务表
  5. 抢票 | AI未来说学术论坛第十期 视频理解与推荐专场
  6. java中把map转换成list
  7. java 1.5.0 gcj_CentOS安装JAVA后JAVA版本不对的问题
  8. shell:读取文件的每一行内容并输出
  9. e0312 不存在用户定义的_更加灵活的参数校验,Spring-boot自定义参数校验注解
  10. Hibernate Session和Jpa EntityManager
  11. vs 2012/2013 等工具中,使用正则表达式,查找、替换
  12. 深度学习:神经风格转移
  13. STM32第九课(Input Capture, HAL)
  14. 共享办公平台,提高整体使用率
  15. 网吧克隆——XP系统母盘制作全攻略
  16. 个人网站搭建之服务器环境搭建
  17. Java程序员日常开发提效工具(谷歌,Idea)-长期更新
  18. 如何把mac照片导入u盘_macbook air里的相片要怎么放到u盘里?
  19. 大学生如何奋斗5年从月薪3500到700万
  20. /prod-api/ 整合阿里云服务器 2020年12月13日 23:44:18(日记)

热门文章

  1. 如何在vue中优雅的使用ocx控件:结合iframe
  2. 事件日志中出现TKK: 更新 TKK 失败,请检查网络连接,翻译插件用不了
  3. TKK: 更新 TKK 失败,请检查网络连接(亲测有效)
  4. MNE初学入门(一)
  5. 工控物联网案例-如何利用LTE-658 4G DTU实现水文水利远程物联网监控
  6. Disconnected: No supported authentication methods available(server sent: publickey) 的解决办法
  7. 2018上半年爆款活动营销盘点
  8. fpga时序相关—set_input_delay和set_output_delay
  9. Java 标准输入输出流(System.in,System.out)使用
  10. 登录界面---油管大佬