3DTouch是啥
这是苹果2015年推出的 IOS9上的一个新特性:在屏幕上增加了一个压力的感触,通过区分轻按和重按来进行不同的用户交互,有Peek/Pop两种新手势.也就是Apple Watch上采用的Force Touch的升级版.
how to start
首先,苹果说:
With Xcode 7.0 you must develop on a device that supports 3D Touch. Simulator in Xcode 7.0 does not support 3D Touch.
也就是 Xcode7可以搞,但是模拟器器不支持.
没关系,N 早就有牛人解决了这个问题.
git地址:https://github.com/DeskConnect/SBShortcutMenuSimulator。
clone
进入Termnial执行
|
|
切换模拟器 (电脑上只有 X7的可以跳过这一步)
如果电脑里有多个 Xcode(比如我自己目前有 X6,X7两个版本),则需要先进行Xcode 路径设置,如下:
|
|
PS:上面命令中,Xcode2.app是你电脑中Xcode的名字,这里如要特别注意,如果名字中有空格,需要修改一下,把空格去掉,否则会影响命令的执行。
执行模拟器翻新(^_^)
之后在SBShortcutMenuSimulator的目录中执行如下操作
|
|
测试一下
我们可以通过向指定端口发送消息的方法来在模拟器上模拟3D Touch的效果(此处用的是日历 App, 自己的 App 记得改 BundleID)
PS: 如果失效了,重置模拟器–>重复翻新步骤–> 接着 echo 就好了
|
|
进行自定义3DTouch相关开发
Quick Actions
staticquick actions
直接在 info.plist 里添加字段即可.
- UIApplicationShortcutItems,数组key 值
- 每一个 item 内部如下:
下面的是必选的
- UIApplicationShortcutItemTitle - [string],quick actions名称(显示在手机桌面)
- UIApplicationShortcutItemType - [string],quick actions类型(开发用)
下面的是可选的
- UIApplicationShortcutItemSubtitle - [string],quick actions副标题(显示在上面的标题下)
- UIApplicationShortcutItemIconFile - [string],quick actions自定义图标,有尺寸要求,如果设置的话,就忽略UIApplicationShortcutItemIconType选项的内容
- UIApplicationShortcutItemIconType - [string],quick actions系统图标类型,有一堆预设的
- UIApplicationShortcutItemUserInfo - [array] ,quick actions自定义信息(开发用)
API 介绍如下:
PS:quick actions系统图标的枚举如下.
|
|
设置好以后,直接运行,退回到模拟器桌面,在命令行工具重复 echo 那句代码,可以看到效果
要实现进入 App 后的操作,实现下面方法
|
|
dynamic quick actions
需要在代码里运行代码来添加到桌面上
假设场景为:当用户进入过某页面后,更新3DTouch 中得某一个quick actions
1.下面是生成dynamic quick actions的代码:
|
|
记得添加到quick actions数组
|
|
2.注意一个地方,正常启动 App 的时候,launchOptions
为 nil, 从3DTouch 启动的时候launchOptions
为一个包含有 UIApplicationShortcutItem
对象的字典,我们应在合适的时候,此方法返回 NO 来避免重复调用
|
|
3.在 Appdelegate 文件里,实现下面方法来处理通过 qucikActions 进入 App 的情况:
(注意, static quick actions也是这个方法)
(注意2:这个方法会在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
调用完毕之后调用)
|
|
dynamic quick actions的更新
|
|
效果如下
dynamic/staticquick actions区别
- staticquick actions:就算程序从没有启动过,也可以正常使用(当然逻辑业务数据需要自己弄)
- dynamic quick actions:程序启动过一次以后就配置成功了.以后就可以正常使用了
- dynamic/staticquick actions主/副标题最多2行字,超出部分…
- dynamic/staticquick actions一共最多4个
- staticquick actions排序在dynamic quick actions上
—-分割线,下面的就没办法用模拟器了,必须6S 走起—-
Peek & Pop
peek&pop 是敲击预览
在App 内部,随着用户按压力量的增加,交互会出现三个阶段:
暗示内容预览是可使用的
展示预览(peek),和快捷选项菜单(peek quick actions)
可选的跳转到预览中的视图(pop)
当你使用 peek 和 pop 时,系统通过压力决定从哪个阶段过度至下一个。
说了这么多,其实就是一个字:用力按屏幕!
效果
code
场景:界面 A 有一堆 cell, 用户可以通过 peek&pop 弹出预览视图界面 B,并且有一些自定义选项给用户选择
界面 A 遵循协议
UIViewControllerPreviewingDelegate
界面 A 实现2个方法
|
|
- 上面2个方法,就可以让界面 A 通过强力指压,出现预览页面了.注意,预览页面的数据也在此处进行设置.
- 界面 B 如果需要在预览的时候提供自定义按钮,则需要实现一个方法
|
|
- 最后一个,当出现预览界面 B 的时候, B 的
viewDidLoad
方法也会正常执行,销毁的时候dealloc
也会执行
have fun
原创文章,转载请注明地址: https://kevinmky.github.io