今天休息,先来无事就自己看了一下,关于3d touch,看完后自己有动手尝试了一下,感觉也并不是很难,

经过大量的搜索,目前为止,发现有三种实现方式;

第一种:info文件中添加字段

这种方式,最为直接,也最为方便,但是有有一定的缺点,就是显示图标问题,这种方式只能显示,系统给的图标,

必填项(下面两个键值是必须设置的):

UIApplicationShortcutItemType 这个键值设置一个快捷通道类型的字符串 

UIApplicationShortcutItemTitle 这个键值设置标签的标题

选填项(下面这些键值不是必须设置的):

UIApplicationShortcutItemSubtitle 设置标签的副标题

UIApplicationShortcutItemIconType 设置标签Icon类型

UIApplicationShortcutItemIconFile  设置标签的Icon文件

UIApplicationShortcutItemUserInfo 设置信息字典(用于传值)

 

UIApplicationShortcutItemIconType 类型只能用系统的type,如果要想换成自己的图标的话,那这种方法就不适合

下面附上系统提供几种类型:

在appdelegate 中加上这个按压手势回调方法就行了

  1. - (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler{
  2. //判断先前我们设置的唯一标识
  3. if([shortcutItem.type isEqualToString:@"-11.UITouchText.share"]){
  4. NSArray *arr = @[@"hello 3D Touch"];
  5. UIActivityViewController *vc = [[UIActivityViewController alloc]initWithActivityItems:arr applicationActivities:nil];
  6. //设置当前的VC 为rootVC
  7. [self.window.rootViewController presentViewController:vc animated:YES completion:^{
  8. }];
  9. }else if ([shortcutItem.type isEqualToString:@"Three.3d.tou"])
  10. {
  11. ThreeViewController *secod = [[ThreeViewController alloc]init];
  12. [nav pushViewController:secod animated:YES];
  13. }
  14. }

第二种:动态标签(别人都是这么叫,有点不明所以然) 

这种方法就完全可以很好的弥补,第一个方法的缺点。但是它也是有一个缺点,就是直接app 装上后运行过一次,才能唤出3d touch手势,第一种是装上就能。

废话不多说,直接上代码,

  1. -(void)add3dtouch
  2. {
  3. /**
  4. * UIApplicationShortcutItem 创建标签的类
  5. * UIApplicationShortcutIcon 创建可变标签的类
  6. * UIApplicationShortcutItem 创建标签ICON的类
  7. */
  8. // 添加系统自带的icon-type
  9. UIApplicationShortcutIcon *icon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeHome];
  10. UIApplicationShortcutItem *item = [[UIApplicationShortcutItem alloc]initWithType:@"mian" localizedTitle:@"首页" localizedSubtitle:@"fristVC" icon:icon userInfo:nil];
  11. // 添加自己的图标
  12. UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"second"];
  13. UIApplicationShortcutItem *item1 = [[UIApplicationShortcutItem alloc]initWithType:@"second" localizedTitle:@"SecondVC" localizedSubtitle:@"Second-sub-title" icon:icon1 userInfo:nil];
  14. // 如果系统图标不满足需求,可以使用+ (instancetype)iconWithTemplateImageName:(NSString *)templateImageName;
  15. // 添加自定义图片作为标签,需要注意的是:图片必须预先添加进bundle中
  16. UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"three.jpg"];
  17. UIApplicationShortcutItem *item2 = [[UIApplicationShortcutItem alloc]initWithType:@"three" localizedTitle:@"ThreeVC" localizedSubtitle:@"Three-sub-title" icon:icon2 userInfo:nil];
  18. // shortcutItems是一个数组
  19. [UIApplication sharedApplication].shortcutItems = @[item,item1,item2];
  20. }

但是 需要注意的是 在调用这个方法的时候必须要判断系统版本必要大于9.0,不然会崩

  1. // 判断系统版本大于9.0再设置 (若不判断 在低版本系统中会崩溃)
  2. if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0){
  3. [self add3dtouch];
  4. }

回调方法和第一种方法,一样就行了。

第三种: 触发机制 参考 微信朋友圈 3dtouch打开图片 然后向上滑动,下面出现一个菜单view

原博客地址:http://www.cnblogs.com/n1ckyxu/p/5096316.html

原博客 里讲解的很详细了,并且有demo链接,我在这里就不做解释了,

个人认识,这种方法 相对于前面2种,比较麻烦一点,但是用途是不一样的。前2种,是针对应用图标上的3d touch的,但是第三种是针对应用中的3d touch 效果

iOS 3DTouch 的开发套路大全的更多相关文章

  1. 2021 年 iOS 应用程序开发七种最佳语言

    移动应用程序现在几乎是每个在线业务的必备品.最新的 StatCounter 数据显示,多达56% 的在线连接是通过移动设备建立的,这使它们高于平板电脑和计算机.更重要的是,同一个消息来源说,其中27% ...

  2. iOS app内存分析套路

    iOS app内存分析套路 Xcode下查看app内存使用情况有2中方法: Navigator导航栏中的Debug navigator中的Memory Instruments 一.Debug navi ...

  3. 在MAC上搭建cordova3.4.0的IOS和android开发环境

    Hello,大家好,今天给大家说说在mac上搭建cordova3.4.0的iOS和Android开发环境,首先下载cordova,地址:https://cordova.apache.org/#down ...

  4. iOS原生地图开发指南续——大头针与自定义标注

    iOS原生地图开发指南续——大头针与自定义标注 出自:http://www.sxt.cn/info-6042-u-7372.html 在上一篇博客中http://my.oschina.net/u/23 ...

  5. 从C#到Objective-C,循序渐进学习苹果开发(5)--利用XCode来进行IOS的程序开发

    本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.前面几篇随笔主要介绍C#和O ...

  6. iOS系统提供开发环境下命令行编译工具:xcodebuild

    iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单 ...

  7. iOS原生地图开发详解

    在上一篇博客中:http://my.oschina.net/u/2340880/blog/414760.对iOS中的定位服务进行了详细的介绍与参数说明,在开发中,地位服务往往与地图框架结合使用,这篇博 ...

  8. iOS原生地图开发进阶——使用导航和附近兴趣点检索

    iOS原生地图开发进阶——使用导航和附近兴趣点检索 iOS中的mapKit框架对国际化的支持非常出色.在前些篇博客中,对这个地图框架的基础用法和标注与覆盖物的添加进行了详细的介绍,这篇博客将介绍两个更 ...

  9. iOS越狱程序开发

    iOS越狱程序开发http://www.docin.com/p-760246852.html

随机推荐

  1. 互不侵犯king (状压dp)

    互不侵犯king (状压dp) 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子.\(1\le n\ ...

  2. 多线程中wait、notify理解

    实在惭愧,java开发多年,多线程运用一直不多,该知识点理解也不够,不怎么会用.赶上使用多线程 生产者.消费者模式,学习下该知识点. synchronized  获取锁 wait 阻塞本线程,释放对象 ...

  3. 洛谷P3870 [TJOI2009]开关

    题目描述 现有\(N(2 ≤ N ≤ 100000)\)盏灯排成一排,从左到右依次编号为:\(1,2,......,N\).然后依次执行\(M(1 ≤ M ≤ 100000)\)项操作,操作分为两种: ...

  4. 3Ds Max FTL:Virtual device creation failed.

    1.在安装完成并激活3DsMax2017中文版后,启动提示:渲染错误消息:FTL: Virtual device creation failed.(中文译:虚拟设备的创建失败). 2.关闭渲染错误消息 ...

  5. lintcode-dfs实现二叉树的层序遍历

    class Solution { /** * @param root: The root of binary tree. * @return: Level order a list of lists ...

  6. postgresql删除还有活动连接的数据库

    select pg_terminate_backend(pid) from pg_stat_activity where datname='testdb' and pid<>pg_back ...

  7. (转)SELinux是什么意思,如何关闭?Linux下的防火墙用什么命令打开?

    SELinux是什么意思,如何关闭?Linux下的防火墙用什么命令打开? 原文:http://blog.csdn.net/hhcccchh/article/details/12995539 SELin ...

  8. 系统启动时,BIOS与影子内存_5

    问题:“当我们按下电源开关时,电源开始供电,芯片组撤去RESET信号,CPU马上就从地址FFFF0H处开始执行指令,这个地址在系统BIOS的地址范围内,无论是Award BIOS还是AMI BIOS, ...

  9. ASP编码规范

    ASP编码规范(--::) 第一章 ASP编码规范通述 ASP编码分为两大部分,一部分为静态文件编码,一部分为包含服务器端脚本的动态文件编码. 静态文件编码分script编码和HTML编码两部分. 服 ...

  10. 50个必备的jQuery代码段

    本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助.其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助 ...