3D Touch
6s及以上设备才支持;
一、静态设置
首先,在info.plist文件中添加如下键值(只能手打上去,没提示):
先添加了一个UIApplicationShortcutItems的数组,这个数组中添加的元素就是对应的静态标签,在每个标签中我们需要添加一些设置的键值:
必填项(下面两个键值是必须设置的):
UIApplicationShortcutItemType 这个键值设置一个快捷通道类型的字符串
UIApplicationShortcutItemTitle 这个键值设置标签的标题
选填项(下面这些键值不是必须设置的):
UIApplicationShortcutItemSubtitle 设置标签的副标题
UIApplicationShortcutItemIconType 设置标签Icon类型
UIApplicationShortcutItemIconFile 设置标签的Icon文件
UIApplicationShortcutItemUserInfo 设置信息字典(用于传值)
我们如上截图设置后,运行程序,用我们前面的方法进行测试,效果如下:
二、动态设置
UIApplicationShortcutItem * item = [[UIApplicationShortcutItem alloc]initWithType:@
"two"
localizedTitle:@
"第二个标签"
localizedSubtitle:@
"看我哦"
icon:[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypePlay] userInfo:nil];
添加
[UIApplication sharedApplication].shortcutItems = @[item];
typedef
NS_ENUM(NSInteger, UIApplicationShortcutIconType) {
UIApplicationShortcutIconTypeCompose,
//编辑的图标
UIApplicationShortcutIconTypePlay,
//播放图标
UIApplicationShortcutIconTypePause,
//暂停图标
UIApplicationShortcutIconTypeAdd,
//添加图标
UIApplicationShortcutIconTypeLocation,
//定位图标
UIApplicationShortcutIconTypeSearch,
//搜索图标
UIApplicationShortcutIconTypeShare
//分享图标
} NS_ENUM_AVAILABLE_IOS(9_0);
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler NS_AVAILABLE_IOS(9_0);
当我们通过标签进入app时,就会在appdelegate中调用这样一个回调,我们可以获取shortcutItem的信息进行相关逻辑操作。
这里有一点需要注意:我们在app的入口函数:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
也需要进行一下判断,在launchOptions中有UIApplicationLaunchOptionsShortcutItemKey这样一个键,通过它,我们可以区别是否是从标签进入的app,如果是则处理结束逻辑后,返回NO,防止处理逻辑被反复回调。
几点注意:
1、快捷标签最多可以创建四个,包括静态的和动态的。
2、每个标签的题目和icon最多两行,多出的会用...省略
三、模拟器模拟3D Touch
git地址:https://github.com/DeskConnect/SBShortcutMenuSimulator。(不需要去下载)
1、安装运行
在终端中一次运行如下指令:
git clone https:
//github
.com
/DeskConnect/SBShortcutMenuSimulator
.git
cd
SBShortcutMenuSimulator
make
xcrun simctl spawn booted launchctl debug system
/com
.apple.SpringBoard --environment DYLD_INSERT_LIBRARIES=$PWD
/SBShortcutMenuSimulator
.dylib
xcrun simctl spawn booted launchctl stop com.apple.SpringBoard
echo
'com.apple.mobilecal'
|
nc
127.0.0.1 8000
sudo
xcode-
select
-switch
/Applications/Xcode2
.app
/Contents/Developer/