iOS9 3DTouch 之 Home Screen Quick Actions
最后更新:2016-12-18
测试环境:
Xcode8.1
一、前言
iOS9 已经过去一年了,3D Touch也在项目中实战过,但一直没有总结一下,现在新的项目也用到了3D Touch, 网上找了找资料,很杂,打算自己总结一下,希望不妥之处,还望指正。
二、参考链接:
- 参考链接放前面,主要是 这个很简答,官方文档已经很详细了。可以直接去看也可以的;
- 推荐直接去看官方文档,英文不好也可以接着看下去。
三、理论来一波
苹果提供了两种快速启动方式,分别为 静态快速启动(static quick actions) 与 动态快速启动(dynamic quick actions);
这两种的主要区别就在于:
静态方式的所展示的样式不可改变;
我们的产品-粉粉日记采用的就是静态方式,定义的内容不可以改变(固定的四种);

动态方式,是可以根据内容自定义的;
而天猫采用的就是动态的方式:- 定制样式一:

- 定制样式二:

- 定制样式一:
四、静态快速启动
打开Xcode,新建一个项目,命名为 StaticQuickActionSimpleDemo;



在项目的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 | 可选值,可以传递一些信息进去,一般不怎么用 |
五、动态快速启动
- 新建一个项目,名字为 DynamicQucikActionSimpleDemo

- 简单的在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的更多相关文章
- 3D-Touch Home Screen Quick Actions 使用
1. 3D-Touch简单介绍 3D-Touch是iPhone 6s推出的一种可以让你与手机进行互动的全新方式.这一次,iPhone 能够感应你按压屏幕的力度.除了轻点.轻扫.双指开合这些熟悉的 Mu ...
- iOS9 3DTouch开发
在iOS 9中,新iPhone将第三维度添加到了用户界面. 用户现在可以用力摁下主屏按钮来快速调出应用提供的功能菜单. 在应用中,用户现在可以用力摁下视图以查看更多内容的预览并且快速访问一些功能. 想 ...
- iOS9 3DTouch、ShortcutItem、Peek And Pop技术一览
[iOS]iOS9 3DTouch.ShortcutItem.Peek And Pop技术一览 3DTouch UITouch类里API的变化 iOS9中添加的属性 altitudeAngle 当 ...
- iOS开发 - 3D Touch 应用系列一 - Quick Actions 创建桌面 Icon 快捷方式
个言 很久没发随笔了,有一年多了吧.期间也曾想继续去写随笔,但是因为各种原因而耽搁了.最近又想了一下,还是有很多东西想要写,想要分享,想要记录下来的东西.之后我也会不断写随笔,但不止于 iOS 的方向 ...
- ios9 -3dtouch 手势添加到app上
模拟器实现3dtouch参考以下网站: http://my.oschina.net/u/2340880/blog/511509 - (BOOL)application:(UIApplication * ...
- ios9 3dtouch 博客
http://my.oschina.net/u/2340880/blog/511509#OSC_h3_3
- 3DTouch开发 (基础)
一.3DTouch开发准备工作(让模拟器也支持 3DTouch 的解决办法) 需要支持3DTouch的设备,如iPhone6s或以上.iOS9或以上.Xcode7或以上,估计很多和我一样的屌丝还没有i ...
- iOS9新特性-3D Touch
本文主要讲解3DTouch各种场景下的开发方法,开发主屏幕应用icon上的快捷选项标签(Home Screen Quick Actions),静态设置 UIApplicationShortcutIte ...
- 3DTouch简单了解
3D Touch的三大模块 代码Demo:https://github.com/haozheMa/3DTouch 在我们的app中使用3D Touch功能,主要分为以下三个模块: 1.Home Scr ...
随机推荐
- [Git] 014 远程仓库篇 第一话
0. 前言 在 [Git] 001 初识 Git 与 GitHub 之新建仓库 中,我在 GitHub 上建了一个仓库 "interesting" 这回的任务 把远程的 " ...
- Docker数据持久化及实战(Nginx+Spring Boot项目+MySQL)
Docker数据持久化: Volume: (1)创建mysql数据库的container docker run -d --name mysql01 -e MYSQL_ROOT_PASSWORD= my ...
- Tomcat控制台中文乱码
参考:https://blog.csdn.net/zhaoxny/article/details/79926333 1.找到${CATALINA_HOME}/conf/logging.properti ...
- Python yield用法浅析(stackoverflow)
这是stackoverflow上一个关于python中yield用法的帖子,这里翻译自投票最高的一个回答,原文链接 here 问题 Python中yield关键字的用途是什么?它有什么作用?例如,我试 ...
- app接口开发
最近一段时间一直在做APP接口,总结一下APP接口开发过程中的注意事项: 1.效率:接口访问速度 APP有别于WEB服务,对服务器端要求是比较严格的,在移动端有限的带宽条件下,要求接口响应速度要快,所 ...
- TApplication,TForm,TControl,TComponent,TWinControl研究(博客索引)good
TApplication,TForm,TControl,TComponent,TWinControl研究 http://blog.csdn.net/suiyunonghen/article/detai ...
- 大div中,三个小div水平居中
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- cookie,localStorage和sessionStorage
一.Cookie Cookie 是小甜饼的意思.cookie 非常小,它的大小限制为4KB左右.它的主要用途有保存登录信息,比如你登录某个网站市场可以看到“记住密码”,这通常就是通过在 Cookie ...
- mysql分组查询及其测试用例
语法: select 查询列表 from 表 [where 筛选条件] group by 分组的字段 [order by 排序的字段]; 特点: 1.和分组函数一同查询的字段必须是group by后出 ...
- Linux系统性能测试工具(六)——磁盘io性能工具之dd
本文介绍关于Linux系统(适用于centos/ubuntu等)的磁盘io性能测试工具-dd.磁盘io性能测试工具包括: fio: dd