3D Touch其實(shí)就是快速進(jìn)入指定app界面的一種方式。
下面和大家分享一下簡單的實(shí)現(xiàn)
1矛紫、靜態(tài)標(biāo)簽
靜態(tài)標(biāo)簽是我們在項(xiàng)目的配置plist文件中配置的標(biāo)簽匹中,在用戶安裝程序后就可以使用墓懂,并且排序會在動態(tài)標(biāo)簽的前面统捶。
我們先來看靜態(tài)標(biāo)簽的配置:
首先,在info.plist文件中添加如下鍵值(我在測試的時候沃粗,系統(tǒng)并沒有提示粥惧,只能手打上去):
先添加了一個UIApplicationShortcutItems的數(shù)組,這個數(shù)組中添加的元素就是對應(yīng)的靜態(tài)標(biāo)簽最盅,在每個標(biāo)簽中我們需要添加一些設(shè)置的鍵值:
必填項(xiàng)(下面兩個鍵值是必須設(shè)置的):
UIApplicationShortcutItemType 這個鍵值設(shè)置一個快捷通道類型的字符串
UIApplicationShortcutItemTitle 這個鍵值設(shè)置標(biāo)簽的標(biāo)題
選填項(xiàng)(下面這些鍵值不是必須設(shè)置的) :
UIApplicationShortcutItemSubtitle 設(shè)置標(biāo)簽的副標(biāo)題
UIApplicationShortcutItemIconType 設(shè)置標(biāo)簽Icon類型
UIApplicationShortcutItemIconFile 設(shè)置標(biāo)簽的Icon文件
UIApplicationShortcutItemUserInfo 設(shè)置信息字典(用于傳值)
我們?nèi)缟辖貓D設(shè)置后突雪,運(yùn)行程序,用我們前面的方法進(jìn)行測試檩禾,效果如下:
2挂签、動態(tài)標(biāo)簽
動態(tài)標(biāo)簽是我們在程序中,通過代碼添加的盼产,與之相關(guān)的類,主要有三個:
UIApplicationShortcutItem 創(chuàng)建3DTouch標(biāo)簽的類
UIMutableApplicationShortcutItem 創(chuàng)建可變的3DTouch標(biāo)簽的類
UIApplicationShortcutIcon 創(chuàng)建標(biāo)簽中圖片Icon的類
在AppDelegate.m文件中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
CGFloat currentDeviceVersionFloat = [[[UIDevice currentDevice] systemVersion] floatValue];
//判斷版本號勺馆,3D Touch是從iOS9.0后開始使用
if (currentDeviceVersionFloat >= 9.0) {
UIApplicationShortcutIcon *iconFitness = [UIApplicationShortcutIcon iconWithTemplateImageName:@"圖片1"];
//菜單文字
UIMutableApplicationShortcutItem *itemFitness = [[UIMutableApplicationShortcutItem alloc] initWithType:@"1" localizedTitle:@"標(biāo)題一"];
//綁定信息到指定菜單
itemFitness.icon = iconFitness;
// 菜單圖標(biāo)
UIApplicationShortcutIcon *iconRun = [UIApplicationShortcutIcon iconWithTemplateImageName:@"圖片二"];
//菜單文字
UIMutableApplicationShortcutItem *itemRun = [[UIMutableApplicationShortcutItem alloc] initWithType:@"2" localizedTitle:@"標(biāo)題二"];
//綁定信息到指定菜單
itemRun.icon = iconRun;
//綁定到App icon
application.shortcutItems = @[itemFitness,itemRun];
}
}
響應(yīng)事件如下
- (void)application:(UIApplication *)application performActionForShortcutItem:(nonnull UIApplicationShortcutItem *)shortcutItem completionHandler:(nonnull void (^)(BOOL))completionHandler{
if ([shortcutItem.type isEqualToString:@"1"]) {
//如果有導(dǎo)航欄參考下面注釋部分
UINavigationController *myNavi = self.window.rootViewController.childViewControllers[0];
// _tabBar.selectedIndex = 0;
UIViewController * picker1 = [[UIViewController alloc]init];//進(jìn)入窗口的初始化
//利用NSUserDefaults 的標(biāo)識戏售,來防止重復(fù)初始化VC
// if ([[NSUserDefaults standardUserDefaults]boolForKey:@"3d"]) {
// [myNavi popViewControllerAnimated:NO];
// [myNavi pushViewController:_picker1 animated:YES ];
// }else{
[myNavi pushViewController:picker1 animated:YES ];
// }
}
if ([shortcutItem.type isEqualToString:@"2"]) {
/ / UINavigationController *myNavi = self.window.rootViewController.childViewControllers[1];
// _tabBar.selectedIndex = 1;
UIViewController *vc = [[UIViewController1 alloc]init];//進(jìn)入窗口的初始化
// if ([[NSUserDefaults standardUserDefaults]boolForKey:@"3d1"]) {
// [myNavi popViewControllerAnimated:NO];
// [myNavi pushViewController:_LJHVC animated:YES ];
// }else{
[myNavi pushViewController:vc animated:YES ];
// }
}
}
如果你在為系統(tǒng)“分享”犯愁的話侨核,我可以悄悄的告訴你,這個是上架后系統(tǒng)自帶的系統(tǒng)分享功能(我搞了一天多0.0)