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 ...
随机推荐
- SpringBoot项目启动时执行初始化操作
SpringBooot中的CommandLineRunner接口会在所有Spring Beans初始化之后,SpringApplication.run()之前执行. 1.添加pom引用 <?xm ...
- 2019 计蒜之道 初赛 第一场 商汤的AI伴游小精灵
https://nanti.jisuanke.com/t/39260 根据题意我们可以知道 这是一个树 我们只需要找到出度最大的两个点就好了 如果包含根节点的话要-- 两个点相邻的话也要-- 数据很 ...
- Java——HashMap底层源码分析
1.简介 HashMap 根据键的 hashCode 值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的. HashMap 最多只允许一条记录的key为 nu ...
- JS中同步与异步
不讲过多定义,举两个例子说明下 例一: console.log(100); setTimeout(function(){ console.log(200); },1000); console.log( ...
- 小程序中页面兼容h5标签的解析
有时候当小程序向后台拿数据是一篇html标签的文章时,把它放进小程序会发现很多标签就不兼容,如果要一个个改又很麻烦,有没有方法可以很快地兼容html标签呢? 有个工具可以做到:wxParse 下载了它 ...
- (ES6)数据处理常用工具方法收集(更新状态: on)
1. 扁平数组转成tree结构(来源: StackOverflow的印度老哥写的) // Data Set // One top level comment var comments = [{ id: ...
- scrollIntoView 与平滑滚动
经常有这样的需求:点击一个链接(内链)跳转到当前页面中间某个部分.对于这样的需求,很容易想到使用锚点实现.但有一个问题:滚动一步到位,太生硬了. 我还是比较喜欢平滑滚动.HTML5 中提供了 CSS ...
- Android 在同一个手机上安装多个相同的apk,便于调试
Android studio 在同一个手机上安装多个相同的apk 原文地址:http://yj.itrydo.com/posts/iKJryXL9zkfSGRTZk 先看效果: 1.在我使用ecsli ...
- Python 自定义三方库
一.注册一个pypi账号 https://pypi.org/ 二.github上创建一个项目 https://github.com/ 三.编写自己的python项目 项目结构(参考):https:// ...
- CodeBlocks17.12+汉化包下载及用法
本文已迁移至:https://blog.csdn.net/COCO56/article/details/95228780