最后更新:2016-12-18

测试环境:

Xcode8.1

一、前言

iOS9 已经过去一年了,3D Touch也在项目中实战过,但一直没有总结一下,现在新的项目也用到了3D Touch, 网上找了找资料,很杂,打算自己总结一下,希望不妥之处,还望指正。


二、参考链接:

  1. 苹果的Getting Started with 3D Touch
  2. 苹果的UIApplicationShortcutItems 介绍
  1. 参考链接放前面,主要是 这个很简答,官方文档已经很详细了。可以直接去看也可以的;
  2. 推荐直接去看官方文档,英文不好也可以接着看下去。

三、理论来一波

  1. 苹果提供了两种快速启动方式,分别为 静态快速启动(static quick actions)动态快速启动(dynamic quick actions);

  2. 这两种的主要区别就在于:

    • 静态方式的所展示的样式不可改变;

      我们的产品-粉粉日记采用的就是静态方式,定义的内容不可以改变(固定的四种);

    • 动态方式,是可以根据内容自定义的;

      而天猫采用的就是动态的方式:

      • 定制样式一:

      • 定制样式二:


四、静态快速启动

  1. 打开Xcode,新建一个项目,命名为 StaticQuickActionSimpleDemo





  2. 在项目的Info.plist中添加以下键值对, 然后Cmd + R 运行起来,shift + cmd + H ,看看效果;

	<key>UIApplicationShortcutItems</key>
<array>
<dict>
<key>UIApplicationShortcutItemIconFile</key>
<string>shortcut_RemindWriteDiary</string>
<key>UIApplicationShortcutItemTitle</key>
<string>文字</string>
<key>UIApplicationShortcutItemType</key>
<string>RemindWriteDiary</string>
</dict>
<dict>
<key>UIApplicationShortcutItemIconFile</key>
<string>shortcut_RemindTakePhoto</string>
<key>UIApplicationShortcutItemTitle</key>
<string>拍照</string>
<key>UIApplicationShortcutItemType</key>
<string>RemindTakePhoto</string>
</dict>
<dict>
<key>UIApplicationShortcutItemIconFile</key>
<string>shortcut_QuickNote</string>
<key>UIApplicationShortcutItemTitle</key>
<string>便利贴</string>
<key>UIApplicationShortcutItemType</key>
<string>QuickNote</string>
</dict>
<dict>
<key>UIApplicationShortcutItemIconFile</key>
<string>shortcut_AccountsRecord</string>
<key>UIApplicationShortcutItemTitle</key>
<string>记账本</string>
<key>UIApplicationShortcutItemType</key>
<string>AccountsRecord</string>
</dict>
</array>





3. 貌似可以了,但是系统怎么相应呢?

需要在 Appdelegate中,我们需要添加一个代理方法来响应。

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler





4. 键的解释说明:

说明
UIApplicationShortcutItemType (必要) 唯一的字符串,来表示快速启动的类型,根据此名称来表示,您启动的是哪个类别
UIApplicationShortcutItemTitle (必要) 展示在启动上面的标题名称,例如 粉粉日记 上面的 文字、类别、便利贴、记账本
UIApplicationShortcutItemSubtitle 可选值,子标题,类似于 UITableViewCell的子标题
UIApplicationShortcutItemIconType 可选值,官方定义的Icon,伴随着 标题名称一起展示
UIApplicationShortcutItemIconFile 可选值,可自定义的Icon,如果设置了此项, UIApplicationShortcutItemIconType将无效
UIApplicationShortcutItemUserInfo 可选值,可以传递一些信息进去,一般不怎么用

五、动态快速启动

  1. 新建一个项目,名字为 DynamicQucikActionSimpleDemo

  2. 简单的在APPDelegate配置一个;

此处仅仅简单的配置,也可在其他地方配置

#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeAdd];
UIApplicationShortcutItem *item1 = [[UIApplicationShortcutItem alloc] initWithType:@"ShortcutItemWrite" localizedTitle:@"记一笔" localizedSubtitle:nil icon:icon1 userInfo:nil]; UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypePlay];
UIApplicationShortcutItem *item2 = [[UIApplicationShortcutItem alloc] initWithType:@"ShortcutItemPlay" localizedTitle:@"播放" localizedSubtitle:nil icon:icon2 userInfo:nil];
[UIApplication sharedApplication].shortcutItems = @[item1, item2]; return YES;
} - (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
{
if ([shortcutItem.type isEqualToString:@"ShortcutItemWrite"]) {
NSLog(@"选择了记一笔");
} else if ([shortcutItem.type isEqualToString:@"ShortcutItemPlay"]) {
NSLog(@"播放");
}
}
@end

运行结果:

点击后效果如下:


iOS9 3DTouch 之 Home Screen Quick Actions的更多相关文章

  1. 3D-Touch Home Screen Quick Actions 使用

    1. 3D-Touch简单介绍 3D-Touch是iPhone 6s推出的一种可以让你与手机进行互动的全新方式.这一次,iPhone 能够感应你按压屏幕的力度.除了轻点.轻扫.双指开合这些熟悉的 Mu ...

  2. iOS9 3DTouch开发

    在iOS 9中,新iPhone将第三维度添加到了用户界面. 用户现在可以用力摁下主屏按钮来快速调出应用提供的功能菜单. 在应用中,用户现在可以用力摁下视图以查看更多内容的预览并且快速访问一些功能. 想 ...

  3. iOS9 3DTouch、ShortcutItem、Peek And Pop技术一览

    [iOS]iOS9 3DTouch.ShortcutItem.Peek And Pop技术一览   3DTouch UITouch类里API的变化 iOS9中添加的属性 altitudeAngle 当 ...

  4. iOS开发 - 3D Touch 应用系列一 - Quick Actions 创建桌面 Icon 快捷方式

    个言 很久没发随笔了,有一年多了吧.期间也曾想继续去写随笔,但是因为各种原因而耽搁了.最近又想了一下,还是有很多东西想要写,想要分享,想要记录下来的东西.之后我也会不断写随笔,但不止于 iOS 的方向 ...

  5. ios9 -3dtouch 手势添加到app上

    模拟器实现3dtouch参考以下网站: http://my.oschina.net/u/2340880/blog/511509 - (BOOL)application:(UIApplication * ...

  6. ios9 3dtouch 博客

    http://my.oschina.net/u/2340880/blog/511509#OSC_h3_3

  7. 3DTouch开发 (基础)

    一.3DTouch开发准备工作(让模拟器也支持 3DTouch 的解决办法) 需要支持3DTouch的设备,如iPhone6s或以上.iOS9或以上.Xcode7或以上,估计很多和我一样的屌丝还没有i ...

  8. iOS9新特性-3D Touch

    本文主要讲解3DTouch各种场景下的开发方法,开发主屏幕应用icon上的快捷选项标签(Home Screen Quick Actions),静态设置 UIApplicationShortcutIte ...

  9. 3DTouch简单了解

    3D Touch的三大模块 代码Demo:https://github.com/haozheMa/3DTouch 在我们的app中使用3D Touch功能,主要分为以下三个模块: 1.Home Scr ...

随机推荐

  1. js for 循环

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. JAVA基础面向对象分析

    面向对象内存的分析: 一:内存的分类 1:栈(tack) 2:堆(heop) 3: 静态区 4:代码区 二:引用数据类型内存特点 三:引用数据类型传值的特点 四:引用数据类型在作为参数时的特点 面向对 ...

  3. springboot无法找到mapper😵

    今天在学习springboot的过程中遇到mapper无法找到的问题,困扰了很久

  4. Java 多线程编程之:notify 和 wait 用法

    wait 和 notify 简介 wait 和 notify 均为 Object 的方法: Object.wait() —— 暂停一个线程 Object.notify() —— 唤醒一个线程 从以上的 ...

  5. Luogu P2168 [NOI2015]荷马史诗

    题目 哈夫曼树的每个叶子结点都有一个权值(表示某数据的出现频率),且\(\sum dis_ival_i\)最小. 哈夫曼树中,权值和越大的集合离根节点越近. 而每个数据对应从根节点到该叶子结点的一种编 ...

  6. [BZOJ 4332] [JSOI2012]分零食(DP+FFT)

    [BZOJ 4332] [JSOI2012]分零食(DP+FFT) 题面 同学们依次排成了一列,其中有A位小朋友,有三个共同的欢乐系数O,S和U.如果有一位小朋友得到了x个糖果,那么她的欢乐程度就是\ ...

  7. php读取excel文件并导入数据库(表头任意设定)

    最近收到一个很奇葩的需求,要求上传excel员工工资表,表格表头不固定,导入后字段名为表头的拼音,每月导入一次,当月重复导入则覆盖现有的当月表头,并且可以按照在界面上按照月份筛选显示,我写的代码主要包 ...

  8. linux下occi操作oracle数据库,中文乱码的问题

    转载:http://www.linuxidc.com/Linux/2008-02/11238.htm 前几日调通了OCI连接数据库的问题后,用Oracle自带的例子测试了一下,能正常读取数据(都是英文 ...

  9. Excel如何通过关键字模糊匹配查找全称

    打开excel,以其素材为例,通过关键字模糊匹配查找全称.   在公司名下输入公式:=LOOKUP(1,0/FIND(D2,A2:A5),A2:A5),按回车键确定即可.   FIND(D2,A2:A ...

  10. ASP.NET中数据库数据导入Excel并打印(2)

    大家可能觉得上面的代码比较复杂,因为上面对于对打印要求比较高的应用,是十分有效的.如果只是单单对数据进行导出,还可以使用简单的格式,比如使用以下的代码:      Private Sub Page_L ...