3D Touch说明
轻压和重压(Peek and Pop)
主屏幕快捷操作(Home Screen Quick Actions)
3D Touch 给 iOS 9 用户提供了一个新的交互维度。在所支持3DTouch的设备上,人们可以通过按压应用的图标去快速选择应用定制的操作。在应用内,人们可以使用多种按压操作去获取一个项目的预览,可以在独立的视图里打开一个项获取相关操作。(了解更多在你的代码中如何添加3D Touch支持,参阅 Adopting 3D Touch on iPhone .)
系统会自动安排图标在快速操作列表中的位置是在左侧或者在右侧,这依赖于你的应用的图标在用户主屏幕的位置。(摒除图标在列表中的位置,在自左向右的语言中文字总是左对齐。)这里有主屏快捷操作的多种展现方式的例子。
使用主屏幕快捷操作去开启引人注目的、高价值的任务。例如,Maps可以让用户不需要打开Maps,通过在当前位置附近搜索就可以获得回家的方向。一个应用至少需要把一个有用的任务放在主屏幕快捷操作里;你可以提供最多四个快捷操作
使用3D Touch必须要有6s或6s plus
3D Touch的三大模块
home screen quick aactions
- 静态菜单[不需要写代码,在info.plist中配制]
- 动态菜单[代码实现]
- 菜单跳转
peek and pop
- 轻度按压预览页面-peek
- 大力按压跳转页面-pop
- peek过程中的自定义操作
force propertiesp
home screen quick aactions
1、静态菜单设置
下载Demo
下图中带“*”号的,key必须设置,值可以没有,如果没有设置,设置菜单的当前cell将不会被显示出来
UIApplicationShortcutItems:
- 副标题 保持标题的简洁不会被切断从而帮助用户快速理解操作是非常重要的。如果你提供的副标题一行显示不全,系统会截断;如果你没有副标题,系统会把一行展示不完全的长标题以两行展现。
- 图标 UIApplicationShortcutItemIconType 显示的
iconType可以参考如下链接和下图(如需swfit去下面链接中查看)
iconType
当UIApplicationShortcutItemIconType和UIApplicationShortcutItemIconFile两个都设置的时候
UIApplicationShortcutItemIconFile的优先级高于UIApplicationShortcutItemIconType
在项目中的info.plist中的配制示例如下图
效果如下图
2、动态菜单及跳转
下载Demo
代码如下
|
|
两种显示效果如下图
peek and pop
下载Demo
peek代码
注意点:
- ndexPathForRowAtPoint获取到的是以当前cell为0,0点的位置,而不是以tableview为0,0点
- 此处的方法一定要看清楚,不是convertPoint:toView:是convertPoint:fromView: 123456789101112131415161718192021222324252627首先要实现UIViewControllerPreviewingDelegate协议/*** peek** @param previewingContext 包含被选中对象的所有信息* @param location 被选中对象手指所在的location*/- (nullable UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContextviewControllerForLocation:(CGPoint)location {// indexPathForRowAtPoint获取到的是以当前cell为0,0点的位置//我们需要的是从tableview顶部为0,0点的位置,才可以获取到当前被选中的cell//获取以cell为0,0点的坐标// NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];//转化坐标// 此处的方法一定要看清楚,不是convertPoint:toView:是convertPoint:fromView:// location = [self.tableView convertPoint:location// toView:[previewingContext sourceView]];location = [self.tableView convertPoint:locationfromView:[previewingContext sourceView]];NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];//根据cell获取数组中的数据id abc = self.items[indexPath.row];IrenaPre *pre = [[IrenaPre alloc] init];pre.item = abc;return pre;}
自定义peek代码
|
|
自定义peek后的
pop
pop是在点出peek后在用力按压一下屏幕后出现的
效果如下图
force
github 下载Demo
github上下载下来的代码在真机跑会有identifier的问题,您最好将identifier修改identifier将‘-’去掉
百度云 下载Demo
按压力度,值范围[0-6.666667]
代码主要在demo中的IrenaForce.h/.m类
代码如下
效果如下