最后更新: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. Redis的 SLAVEOF 命令

    SLAVEOF host port SLAVEOF 命令用于在 Redis 运行时动态地修改复制(replication)功能的行为. 通过执行 SLAVEOF host port 命令,可以将当前服 ...

  2. mysql先分组,然后取每个分组中的第2大的记录

    文章参考http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/ 首先建表: ...

  3. 第四周Java实验总结&学习总结

    实验二 Java简单类与对象 实验目的 掌握类的定义,熟悉属性.构造函数.方法的作用,掌握用类作为类型声明变量和方法返回值: 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性 ...

  4. 利用Flot作基于时间段的曲线图

    Flot是一个可以用于绘制多种图表的开源的JS库,Flot本身的功能已经是基本可以满足日常的需要啦,更可喜的是Flot还有很多的插件可以使用,从而为我们提供更加强大的定制功能,本文在作图中使用的显示坐 ...

  5. c++多线程并发学习笔记(2)

    等待一个时间或其他条件 在一个线程等待完成任务时,会有很多选择: 1. 它可以持续的检查共享数据标志(用于做保护工作的互斥量),直到另一个线程完成工作时对这个标志进行重设.缺点:资源浪费,开销大 2. ...

  6. HDU-4857 逃生(反向拓扑排序 + 逆向输出)

    逃生 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  7. 最长公共子序列(LCS) Easy

    A subsequence of a given sequence is the given sequence with some elements (possible none) left out. ...

  8. Python numpy数据的保存和读取

    在科学计算的过程中,往往需要保存一些数据,也经常需要把保存的这些数据加载到程序中,在 Matlab 中我们可以用 save 和 lood 函数很方便的实现.类似的在 Python 中,我们可以用 nu ...

  9. 雷电模拟器 v3.71绿色版

    目录 1. 按 2. 介绍 3. 下载地址 1. 按 安卓模拟器目前的市场基本上稳定了,逍遥.夜神.雷电,用的人都很多,网易mumu从阴阳师时代就被大家熟知,腾讯手游助手也是随着吃鸡游戏而火,这两个模 ...

  10. Django扩展内置User类

    内置User类 使用内置User可以方便实现登录验证,利用Admin管理界面还可以方便添加.删除.修改用户. 一个内置的User类定义了以下字段: username: 用户名 password: 密码 ...