好久没有写过文章了,今天就给大家带来一篇比较简单的开发教程吧!目的是为了让大伙能够避开那些不必要的坑,快速高效的实现功能。今天呢来和大家讲一下iOS9的新特性3DTouch开发(iOS10都已经出了Beta版,这篇教程真是来的有点晚…)

3DTouch的功能就是用户可以在HomeScreen上通过用力按压屏幕,使屏幕弹出快捷菜单,就好像是我们在Windows上右键鼠标一样,效果图如下:


实现3DTouch有两种方式,一种是通过配置info.Plist来实现的静态方式,另一种是通过代码控制的动态方式。

静态方式实现3DTouch

实现info.Plist中的如下配置

<array><dict><key>UIApplicationShortcutItemIconType</key><string>UIApplicationShortcutIconTypeShare</string><key>UIApplicationShortcutItemTitle</key><string>分享</string><key>UIApplicationShortcutItemType</key><string>3dtouch.share</string></dict></array>

解释一下:
1.UIApplicationShortcutItemIconType 3DTouch图标的类型,例如分享,下载,播放,搜索等等
它的值可以选如下这些:

typedef NS_ENUM(NSInteger, UIApplicationShortcutIconType) {UIApplicationShortcutIconTypeCompose,UIApplicationShortcutIconTypePlay,UIApplicationShortcutIconTypePause,UIApplicationShortcutIconTypeAdd,UIApplicationShortcutIconTypeLocation,UIApplicationShortcutIconTypeSearch,UIApplicationShortcutIconTypeShare,UIApplicationShortcutIconTypeProhibit       NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeContact        NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeHome           NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeMarkLocation   NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeFavorite       NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeLove           NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeCloud          NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeInvitation     NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeConfirmation   NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeMail           NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeMessage        NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeDate           NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeTime           NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeCapturePhoto   NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeCaptureVideo   NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeTask           NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeTaskCompleted  NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeAlarm          NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeBookmark       NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeShuffle        NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeAudio          NS_ENUM_AVAILABLE_IOS(9_1),UIApplicationShortcutIconTypeUpdate         NS_ENUM_AVAILABLE_IOS(9_1)
} NS_ENUM_AVAILABLE_IOS(9_0) __TVOS_PROHIBITED;

2.UIApplicationShortcutItemTitle 3DTouch显示的标题,这个值不能没有
3.UIApplicationShortcutItemType 3DTouch的标识符 ,这个值不能没有,我们通过这个标识符来判断触发的是哪个按钮。
4.除了这几个必要的值以为,我们还可以往里面传入例如:
UIApplicationShortcutItemSubtitle 设置标签的副标题
UIApplicationShortcutItemIconFile 设置标签的Icon文件
UIApplicationShortcutItemUserInfo:字典信息,如传值使用

info.Plist设置完了以后,我们还要加入捕获操作的的响应代码,我们在AppDelegate.m中加入如下代码:

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler

在逻辑中使用shortcutItem.type来判断是哪个按钮触发的消息。

通过info.Plist得到的效果图如下:


2.动态方式实现3DTouch

在AppDelegate.m中加入如下代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {// Override point for customization after application launch.NSLog(@"+++++++didFinishLaunchingWithOptions+++++++");//3D Touch按压程序图标的快捷项//快捷菜单的图标UIApplicationShortcutIcon *icon1=[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeCaptureVideo];UIApplicationShortcutIcon *icon2=[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeAdd];UIApplicationShortcutIcon *icon3=[UIApplicationShortcutIcon iconWithTemplateImageName:@"icon.png"];//快捷菜单UIApplicationShortcutItem *item1=[[UIApplicationShortcutItem alloc]initWithType:@"test1"localizedTitle:@"测试1"localizedSubtitle:nilicon:icon1userInfo:nil];UIApplicationShortcutItem *item2=[[UIApplicationShortcutItem alloc]initWithType:@"test2"localizedTitle:@"测试2"localizedSubtitle:@"这是测试2"icon:icon2userInfo:nil];UIApplicationShortcutItem *item3=[[UIApplicationShortcutItem alloc]initWithType:@"测试3"localizedTitle:@"搜索"localizedSubtitle:nilicon:icon3userInfo:nil];//设置app的快捷菜单[[UIApplication sharedApplication] setShortcutItems:@[item1,item2,item3]];return YES;
}

在上述代码中,我动态的创建了3个3DTouch的选项,当我们通过标签进入app时,就会在appdelegate中调用这样一个回调,我们可以获取shortcutItem的信息进行相关逻辑操作:

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler{NSString *title = nil;if([shortcutItem.type isEqualToString:@"test1"]){title=@"测试1";}else if([shortcutItem.type isEqualToString:@"test2"]){title=@"测试2";}else if([shortcutItem.type isEqualToString:@"test3"]){title=@"测试3";}//这里就弹个框子意思一下//由于UIAlertView在iOS 9被废弃,因此选用UIAlertControllerUIAlertController *alertController=[UIAlertController alertControllerWithTitle:@"提示"message:[NSString stringWithFormat:@"你点击了“%@”",title]preferredStyle:UIAlertControllerStyleAlert];UIAlertAction *action=[UIAlertAction actionWithTitle:@"知道了"style:UIAlertActionStyleDefaulthandler:^(UIAlertAction  *action) {[alertController dismissViewControllerAnimated:YES completion:nil];}];[alertController addAction:action];[self.window.rootViewController presentViewController:alertControlleranimated:YEScompletion:nil];
}

这样我们的动态创建方式也完成了。


总结

因为3DTouch的预览功能不太好演示,所以在此就不在做操作了,大家可以通过头文件来熟悉一下它的一些特性,另外3DTouch在UIView中也增加了预览的功能,下篇文章,我们再来讲下关于3DTouch的Pop和Peek功能。

iOS 新特性实现 3DTouch 开发相关推荐

  1. iOS 新特性分列式 之 iOS 9.x - 主要内容:苹果笔 API 引入、3D Touch、iPad 多任务加强、应用瘦身、应用传输安全、Swift 加强

    iOS 新特性分列式 之 iOS 9.x - 主要内容:苹果笔 API 引入.3D Touch.iPad 多任务加强.应用瘦身.应用传输安全.Swift 加强 太阳火神的美丽人生 (http://bl ...

  2. iOS 新特性分列式 之 iOS 8.x - 主要内容:应用扩展、手动对焦、Size Class

    iOS 新特性分列式 之 iOS 8.x - 主要内容:应用扩展.手动对焦.Size Class 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循&quo ...

  3. iOS新特性框架、仿微信图片浏览、视频监控、爱心动画、文字适配等源码

    iOS精选源码 iOS一个看电影.电视剧集合 HDCinema 一个非常简易的新特性集成框架NewFeatures 全自动化的文字适配 仿微信朋友圈图片浏览器 iOS你的爱心❤️动画源码 一个类似系统 ...

  4. Java系列 - 用Java8新特性进行Java开发太爽了

    本人博客文章网址:https://www.peretang.com/using-java8s-new-features-to-coding-is-awesome/ 前言 从开始写博客到现在已经过去3个 ...

  5. 那些激动人心的React,Webpack,Babel的新特性对于我们开发体验带来哪些提升

    (Webpack 4.0+, React 16.0.0+, Babel 7+) 作者: 赵玮龙 写在开头: 在怀着激动和忐忑的心情写出团队第一篇文章时,这个兴奋感一方面来自团队组建以来这是我们首次对外 ...

  6. 蚂蚁金服 SOFAArk 0.6.0 新特性介绍 | 模块化开发容器...

    SOFAStack Scalable Open Financial Architecture Stack 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里 ...

  7. java5至java17新特性总结(开发相关)

    目录 一.JAVA5~11(图片版) 二.JAVA12~17(文字版) 开关表达式 文本块 打包工具 Instanceof 的模式匹配 记录 密封类 一.JAVA5~11(图片版) 二.JAVA12~ ...

  8. 盖国强:Oracle12c新特性设计与开发实现

    在第二天上午的专场四,来自云和恩墨创始人盖国强,同时他也是Oracle ACE总监.ITpub超级版主带来了<Oracle12c :新特性的设计与开发实现>主题演讲.在这个主题中,和大家分 ...

  9. InterSystems IRIS哪些新特性让用户开发体验得到了极大提升?

    谈到开发体验,什么最重要?如何为客户提供更好的开发体验?InterSystems IRIS的最新版本有哪些新特性极大优化了用户的开发体验?这是本月"极客聊吧"的话题,我们计划通过上 ...

最新文章

  1. [蓝桥杯][算法提高VIP]断案-枚举
  2. 设计一算法查找链表的中间结点。要求该算法的时间复杂度为O(n),空间复杂度为O(1)
  3. android listview item 展开动画,android的ListView点击item使item展开的做法的实现代码
  4. Java字符字符串类
  5. 全局安装gulp 报错问题解决
  6. 浅谈SpringMVC之DispatcherServlet
  7. error “Device supports x86, but APK only supports armeabi-v7a”
  8. shell按照时间排序_初识Shell(3)
  9. echarts设置标题样式_Pyecharts 全局配置项之标题配置项
  10. echarts-map的使用
  11. 集成电路模拟版图入门-版图基础学习笔记(一)
  12. 易經大意 061_080
  13. Robocup场地信息
  14. 关于Jupyter Notebook的环境配置
  15. 实体店商家微信会员系统开发步骤_分享微信会员系统优势
  16. 吴恩达推荐好文:中国人工智能的崛起
  17. MASM32 v11 汇编、连接及运行程序的方法
  18. 复利计算机软件,复利计算器5.0加强版
  19. Email营销知多少
  20. DPDK 内存管理---malloc_heap和malloc_elem

热门文章

  1. python 技巧写法
  2. android热修复技术tinker,Android热修复方案第一弹——Tinker篇
  3. 【fpga里Verilog语言的小知识点】
  4. 微信小程序:云开发表情包制作源码
  5. android平台开发板外接罗技C525摄像头不支持扫码有什么办法解决
  6. 使用Adobe illustrator (AI)快速制作图标
  7. 如何使用测试仪进行400G交换机性能测试
  8. 没有基础适合学习java吗?
  9. 《我的世界》JAVA版本需使用微软账号登录
  10. 风控策略中如何制定差异化利率定价方案