iOS学习之:3D Touch
在项目中可能需要加入 3D Touch 功能,这篇文章就记录一下自己的学习结果。
有两种方式给应用添加 3D Touch 的菜单:静态添加(Info.plist)和动态添加(纯代码)。
- 静态添加
- 动态添加
- 使用
预备
- 3D Touch 只在 iOS 9 及以上版本得到支持,之前版本的 iOS 并不支持该功能;
- 3D Touch 只在 iPhone 6s 及以后型号的 iPhone 或 iPad Pro 上可用,更早的设备并不支持该功能。
可以通过如下代码进行判断:
1 | switch self.traitCollection.forceTouchCapability { |
静态添加
静态添加直接在 Info.plist 文件中添加如下字段即可:
各个字段的含义:
- UIApplicationShortcutItems:数组中的元素是我们需要的快捷选项标签。
- UIApplicationShortcutItemType(required):选项的唯一标识符。
- UIApplicationShortcutItemTitle(required):选项的标题。
- UIApplicationShortcutItemSubtitle:选项的子标题。
- UIApplicationShortcutItemIconType:选项中显示系统提供的图标。
- UIApplicationShortcutItemUserInfo:字典信息,可用于传值。
- UIApplicationShortcutItemIconFile:使用项目中图片作为选项图标,指定了此选项后会忽略 UIApplicationShortcutItemIconType 的设置,用户自定义图片优先级高于系统图标。
效果图:
在 plist 文件中定义的顺序,在实际显示时,是按照距离 App 图标的顺序来排的。
动态添加
动态添加其实也是将上方 plist 中定义的字段用代码创建:
- 创建图标对象——UIApplicationShortcutIcon
- 创建菜单 item 对象——UIApplicationShortcutItem
- 将 item 数组赋值给
创建代码如下:
1 | private func config3DTouchItems() { |
效果图:
使用
我们只需要在 AppDelegate 加入下面的方法,在其中我们可以获取到选项的一些信息:
1 | func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) { |