1.什么是3D Touch?
3D Touch属于一种人机交互的一种方式,具体点用户与手机屏幕的一种交互方式。在3D Touch出现前看看现有的一些用户与手机屏幕的交互方式有哪些?
现有的交互方式:点按,双击,长按,捏合,旋转,拖动,轻扫,快速滑动
官方介绍:iOS Human Interface GuidelinesBeta Gesture
总结以上的交互都是在一个二维的界面上根据接触的区域、时间、速度、方向,次数等维度,计算得出一种用户的手势操作
3D Touch是从一个新的维度出创建一种交互方式
3D Touch是触摸屏的压力感应功能。是在二维的Multi-Touch触摸屏基础上添加了可以对用户按压屏幕的力度大小作出响应于反馈的功能。3D Touch不是Apple的一个使用压力感应的产品,之前已经在MacBook和Apple Watch上使用,不过之前的叫Force Touch.Force Touch是3D Touch的雏形。他只可以区分轻触和重压。
官方介绍:iOS Human Interface GuidelinesBeta 3D Touch
这里提及一下Android平台上的压力感应功能。华为 128GB Mate S支持Force Touch技术,这是Force Touch 第一次应用在手机(比苹果还早,苹果之前使用在了电脑上)。Synaptics(新思国际)提供完整的解决方案Clear Force。
2.3D Touch应用场景分析
应用外的快速导航
在桌面时,用力按app icon,会弹出一个快速导航的列表,点击相应的选项会进入相应的页面
应用内的预览于选择
某音乐类APP 首页点击一个歌单,会有这个歌单的预览于一些操作
3.3D Touch Demo
以上讲的都是一些感念于效果表现,现在是代码层面的分析。主要是以下四种情况:
Home Screen Quick Actions (应用外的快速导航)
Static quick actions静态标签
Static quick actions are available to the userimmediately upon app installation. Define Home screen static quick actions in your app’sInfo.plistfile in theUIApplicationShortcutItemsarray.
就是在info.plist的文件中添加UIApplicationShortcutItems数组就可以使用了,具体数组里面的配置下面会有说明,还有一点需要强调的是,使用静态标签是程序安装以后就可以立即使用了。
UIApplicationShortcutItemType(required) 这个键值设置一个快捷通道类型的字符串
UIApplicationShortcutItemTitle(required) 这个键值设置标签的标题
UIApplicationShortcutItemSubtitle 设置标签的副标题
UIApplicationShortcutItemIconType 设置标签Icon类型
UIApplicationShortcutItemIconFile设置标签的Icon文件
UIApplicationShortcutItemUserInfo 设置信息字典(用于传值)
Dynamic quick actions动态标签
Dynamic quick actions are available to the userafter first launch. Define Home screen dynamic quick actions with theUIApplicationShortcutItem,UIMutableApplicationShortcutItem, andUIApplicationShortcutIconclasses. Add dynamic quick actions to your app’s shared UIApplication object using theshortcutItemsproperty.
动态标签是在程序初始化之后,才可以去配置的,UIApplicationShortcutItem, UIMutableApplicationShortcutItem, and UIApplicationShortcutIcon classes这3个类创建一个标签,UIApplication的shortcutItems管理整个app的标签。
动态标签需要注意的两点:1.动态的标签修改不了已有的静态标签2.动态标签初始化一次以后会保留在shortcutItems不需要每次都创建
Home Screen Quick Actions的样式
图标在那边展示是系统根据当前app icon的位置决定的,会自动调整,图标只能使用系统的图片或者是打包在bundle中的图片。
Home Screen Quick Actions的响应方法
类似推送,当我们点击标签进入应用程序时,也可以进行一些操作,我们可以在AppDelegate中增加了这样一个方法,在方法中可以做一些页面跳转等需求:
- (void)application:(UIApplication*)application performActionForShortcutItem:(UIApplicationShortcutItem*)shortcutItem completionHandler:(void(^)(BOOL))completionHandler;
UIKit Peek and Pop
To supportpeek and popon 3D Touch-capable devices, the iOS 9 SDK includes:
New methods in theUIViewControllerclass forregisteringandunregisteringa view controller for participation in 3D Touch
New view controller protocols (UIViewControllerPreviewingDelegate) to support 3D Touch
To supportpeek quick actions, the iOS 9 SDK includes:
The newUIPreviewActionandUIPreviewActionGroupclasses
The newUIPreviewActionItemprotocol
增加了一个protocol UIViewControllerPreviewingDelegate
在UIViewController类中增加了注册和取消注册的Delegate的方法
具体看代码demo
Web View Peek and Pop
导入WebKit的文件,
创建一个WKWebView对象,设置allowsLinkPreview=true
WKWebView和SFSafariViewController#importWKWebView *webView =
[[WKWebView alloc]initWithFrame:self.view.bounds];
[self.view addSubview:webView];
[webView loadRequest:
[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://www.baidu.com/"]]];
// 需要设置为true才有预览的功能
webView.allowsLinkPreview = true;
safari浏览器
Force Properties in UITouch Objects
3D Touch在UITouch类中增加了两个属性force和maximumPossibleForce
The force of the touch, where a value of 1.0 represents the force of an average touch (predetermined by the system, not user-specific). (read-only)
Force反应当前压力的大小,1.0标示平均值。如果使用 Apple Pencil时,还需要计算altitudeAngle
The maximum possible force for a touch. (read-only)
maximumPossibleForce是Force的最大值
如果你监控touchesBegan,touchesMoved,touchesEnded这3个放回就可以拿到UITouch,从而回到到这两个属性值。
自己写的demo,文中的展示的程序也使用了apple文档中的程序,以下的链接中找到。
写这篇文章时引用的资料链接
2015年苹果秋季新品发布会(中文翻译)
3D Touch开发初体验(模拟器使用3DTouch)