本篇文章介绍3D Touch功能, 大体介绍一下:
下篇为大家提供一个3DTouch的简单Demo

  • 增强版的Force Touch(压力触控)技术,Force Touch之前被应用在于Apple Watch

  • 根据力度的不同,从而带来更多样化的用户体验。比如,用力按快进按钮会使快进的速度更快、用力度触摸代替了长按拖拽选项、用力按屏幕时用户可以自行调节应用界面等

  • 在点击、滑动、缩放的基础上,为iPhone引入了两种新手势:预览(Peek)和敲击(Pop)。该功能可以让图片、邮件、信息和其他内容浮到屏幕的最表面,同时使其他内容出现虚化效果。内容突出显示效果随手指按压力度变化

  • 通过与Retina屏幕集成的电容传感器实现,可以通过检测玻璃与背光的距离感知手指力度大小

  • 目前支持3D Touch的设备只有 iPhone 6s 和 iPhone 6s Plus,即使配有Apple Pencil的强大如iPad Pro,也是不支持。不过按照Apple一贯的做法,之后再新出的加强版iPad Pro,应该是会整合该功能

  • 3D Touch功能默认是开启的,但用户也可以在系统设置中把它关掉(Settings > General > Accessibility > 3D Touch)

  • 支持3D Touch的最低系统要求为 iOS 9,开发人员则需要至少使用XCode 7 GM,目前的最新版为XCode 7.1

和开发人员关系比较密切的部分:

  • Pressure Sensitivity: 压力灵敏度,可以和绘画类及其它创作型软件结合使用,例如根据压力的大小来改变笔触/画线的粗细值。主要为UITouch类增加 了一些新属性,例如

estimatedProperties(触摸属性),updatedProperties(触摸对象更新)等,新增的API,主要集 中在获取X/Y坐标时的精度部分,如 - PreciseLocationInView:,- PrecisePreviousLocationInView:等,有个需要特别注意的是UIForceTouchCapability,使用功能前,必 须进行功能可用性检测

  • Peek and Pop:新引入的手势,主要可以让用户预览内容,甚至进行操作。例如Mac中的文档预览快捷键,浏览器中的快照内容等

  • Quick Actions:快捷菜单,完整名称是Home Screen Quick Actions,类似于电脑中的右键菜单,主要用于快捷操作,这个从它的API名字就可以看出来:UIApplicationShortcutItem。 正如Apple描述的那样,让用户使用更少的操作步骤,更快的进行他们最常用的操作使用,总结一句就是“一键操作”。该部分也分了2个类型:静态 & 动态;其中静态方式在info.plist中进行配置;动态则通过UIApplicationShortcutItem等API进行代码级动态配置处理。 系统默认会优先展示静态的Actions。若App安装后从未打开时,则默认只会展示静态Actions,只有至少完整启动一次之后,动态Actions 才会出现。


下面是在网上搜罗后自己总结的知识点


UITouch类里API的变化
altitudeAngle: 当笔平行于平面时,该值为0 当笔垂直于平面时,该值为Pi / 2
estimatedProperties 当前触摸对象估计的触摸特性 返回值是UITouchPropertyies
updatedProperties 当前触摸对象已经更新的触摸特性 返回值是UITouchPropertyies
estimationUpdateIndex 当每个触摸对象的触摸特性发生变化时,该值将会单独增加
返回值是NSNumber

iOS9中添加的方法
- PreciseLocationInView: 当前触摸对象的坐标

  • PrecisePreviousLocationInView: 当前触摸对象的前置坐标

  • azimuthAngleInview:

  • 沿着x轴正向的方位角

  • 当与x轴正向方向相同时,该值为0

  • 当view参数为nil时,默认为keyWindow

  • azimuthUnitVectorInView:

  • 当前触摸对象的方向上的单位向量

  • 当view参数为nil时,默认为keyWindow

UIForceTouchCapability

UIForceTouchCapabilityUnknown 不能确定是否支持压力感应
UIForceTouchCapabilityUnavailable 不能支持压力感应
UIForceTouchCapabilityAvailable 可以支持压力感应

UITouchType

UITouchTypeDirect 垂直的触摸类型
UITouchTypeIndirect 非初值的触摸类型
UITouchTypeStylus 水平的触摸类型


ShortcutItem



静态方式

  • 打开Info.plist文件

  • 在对应UIApplicationShortcutItems关键字下添加item 如下图

    动态方式
    修改当前应用程序的某个shortcutItem

//获取第0个shortcutItemid oldItem = [existingShortcutItems objectAtIndex: 0];//将旧的shortcutItem改变为可修改类型shortcutItemid mutableItem = [oldItem mutableCopy];//修改shortcutItem的显示标题[mutableItem setLocalizedTitle: @“Click Lewis”];

获取当前应用程序的shortcutItems

 //获取当前应用程序对象UIApplication *app = [UIApplication sharedApplication];//获取一个应用程序对象的shortcutItem列表id existingShortcutItems = [app shortcutItems];

重置当前应用程序的shortcutItems

//根据旧的shortcutItems生成可变shortcutItems数组id updatedShortcutItems = [existingShortcutItems mutableCopy];//修改可变shortcutItems数组中对应index下的元素为新的shortcutItem[updatedShortcutItems replaceObjectAtIndex: 0 withObject: mutableItem];//修改应用程序对象的shortcutItems为新的数组[app setShortcutItems: updatedShortcutItems];

创建一个新的UIApplicationShortcutItem

初始化函数

- initWithType:localizedTitle:localizedSubtitle:icon:userInfo:
- initWithType:localizedTitle:

属性

- localizedTitle:NSString
- localizedSubtitle:NSString

- type:NSString

-  icon:UIApplicationShortcutIcon

-  userInfo:NSDictionary
  • 只有只读特性,想要进行修改时,需要通过mutableCopy方法转变为
    NSMutableApplicationShortcutItem

创建一个新的Item图标

  • 初始化函数

      • iconWithType:
      • iconWithTemplateImageName:
      • iconWithContact:

当程序启动时

  • 判断launchOptions字典内的UIApplicationLaunchOptionsShortcutItemKey是否为空

  • 当不为空时,application:didFinishLaunchWithOptions方法返回false,否则返回true

  • 在application:performActionForShortcutItem:completionHandler方法内处理点击事件


Peek and Pop



注册预览功能的代理对象和源视图

代理对象需要接受UIViewControllerPreviewingDelegate协议

  @interface RootVC<UIViewControllerPreviewingDelegate>{}@end

代理对象实现协议内的Peek和Pop方法

  @implementation RootVC- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)context viewControllerForLocation:(CGPoint) point{UIViewController *childVC = [[UIViewController alloc] init];childVC.preferredContentSize = CGSizeMake(0.0f,300f);CGRect rect = CGRectMake(10, point.y - 10, self.view.frame.size.width - 20,20);context.sourceRect = rect;return childVC;}- (void)previewContext:(id<UIViewControllerPreviewing>)context commitViewController:(UIViewController*)vc{[self showViewController:vc sender:self];}@end

注册方法声明在UIViewController类内

[self registerForPreviewingWithDelegate:self sourceView:self.view];

下篇为大家提供一个3DTouch的Demo

iOS9 3DTouch开发 知识点详解相关推荐

  1. iOS 7 iPhone iPad应用开发技术详解

    2019独角兽企业重金招聘Python工程师标准>>> iOS 7 iPhone iPad应用开发技术详解 本书内容全面,从 Objective-C语法知识.iOS功能特 性,到高级 ...

  2. mysql text类型 使用方法_MySQL使用TEXT/BLOB类型的知识点详解

    一.TEXT和BLOB的区别 TEXT和BLOB家族之间仅有的不同是BLOB类型存储的是二进制数据,没有排序规则或字符集,而TEXT类型有字符集或排序规则.说白了如果要储存中文则选择TEXT. 二.默 ...

  3. Python开发技术详解PDF

    Python开发技术详解(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1F5J9mFfHKgwhkC5KuPd0Pw 提取码:xxy3 复制这段内容后打开百度网盘手 ...

  4. 《Windows驱动开发技术详解》学习笔记

    Abstract   如果推荐 Windows 驱动开发的入门书,我强烈推荐<Windows驱动开发技术详解>.但是由于成书的时间较早,该书中提到的很多工具和环境都已不可用或找不到,而本文 ...

  5. 《Android Studio应用开发实战详解》——第1章,第1.5节Android开发学习路线图

    本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.5节Android开发学习路线图,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区& ...

  6. iOS 7: iPhone/iPad应用开发技术详解

    iOS 7: iPhone/iPad应用开发技术详解 作者:刘一道 出版社:机械工业出版社 出版年:2013-11 页数:507 定价:79.00元 ISBN:9787111440512 样章下载:h ...

  7. python开发技术详解pdf下载_python开发技术详解附源码-python开发技术详解电子书pdf下载高清去水印版-精品下载...

    Python开发技术详解适合Python爱好者.大中专院校的学生.社会培训班的学生以及用Python语言进行系统管理.GUI开发.Web开发.数据库编程.网络编程的人员使用. 内容提要 Python是 ...

  8. 《Android多媒体应用开发实战详解:图像、音频、视频、2D和3D》——2.1节简析Android安装文件...

    本节书摘来自异步社区<Android多媒体应用开发实战详解:图像.音频.视频.2D和3D>一书中的第2章,第2.1节简析Android安装文件,作者 王石磊 , 吴峥,更多章节内容可以访问 ...

  9. 《Unity 4 3D开发实战详解》一6.7 物理引擎综合案例

    本节书摘来异步社区<Unity 4 3D开发实战详解>一书中的第6章,第6.7节,作者: 吴亚峰 , 杜化美 , 张月霞 , 索依娜 责编: 张涛,更多章节内容可以访问云栖社区" ...

最新文章

  1. Python 高阶函数filter、map、reduce、reversed、sorted及迭代器函数 iter
  2. 禁用/启用本地连接的dos命令是什么啊?
  3. Spring Framework源码编译,开始Spring源码学习
  4. Ionic4 Camera插件在iOS13上选取视频失败 上传时候提示权限不足
  5. GetCurrentTime(),GetLocalTime(),GetSystemTime()之间的区别
  6. [bzoj1878][SDOI2009]HH的项链
  7. 5-7Linux 起源,与Unix的联系,与Windows的不同
  8. Mysql主从架构的复制原理及配置详解
  9. Bex5文档服务器,不通过登录直接打开BeX5的首页和功能页的url是什么?
  10. 阿里云服务器ECS建站教程
  11. 工控行业学什么编程语言比较好_中国工控|想学PLC编程?先弄清5种PLC专用语言 !...
  12. c语言switch问候语,C语言switch语句用法详解
  13. 微信小程序,物流助手对接(中通篇)待续
  14. Matlab直方图显示y值
  15. 记一次 .NET 某工控自动化控制系统 卡死分析
  16. 龙格库塔法求解微分方程
  17. js数组遍历常用方法 0802二
  18. 基于机器学习的疲劳驾驶检测系统
  19. W3School学习网站
  20. 《并发编程的艺术》读书笔记

热门文章

  1. 推荐系统-协同过滤算法简介简化版实例
  2. H264—帧,片,参数集,NALU等概念
  3. python 模拟微信浏览器请求_如何用Python模拟登录微信,抓取所有好友个人信息!微信后台很强...
  4. 一起来看流星雨--------魏晨
  5. 英语题目作业(10)
  6. MyBatis 入门学习3
  7. 【转载】三国演义里将领的身高
  8. 富文本编辑器 禁止改变文本内容
  9. 传智播客设计学院简介网页代码
  10. win10 创建访客_建立一个访客会很喜欢的网站