iOS 3DTouch 的開發套路大全


今天休息,先來無事就自己看了一下,關於3d touch,看完后自己有動手嘗試了一下,感覺也並不是很難,

經過大量的搜索,目前為止,發現有三種實現方式;

第一種:info文件中添加字段

這種方式,最為直接,也最為方便,但是有有一定的缺點,就是顯示圖標問題,這種方式只能顯示,系統給的圖標,

必填項(下面兩個鍵值是必須設置的):

UIApplicationShortcutItemType 這個鍵值設置一個快捷通道類型的字符串 

UIApplicationShortcutItemTitle 這個鍵值設置標簽的標題

選填項(下面這些鍵值不是必須設置的):

UIApplicationShortcutItemSubtitle 設置標簽的副標題

UIApplicationShortcutItemIconType 設置標簽Icon類型

UIApplicationShortcutItemIconFile  設置標簽的Icon文件

UIApplicationShortcutItemUserInfo 設置信息字典(用於傳值)

 

UIApplicationShortcutItemIconType 類型只能用系統的type,如果要想換成自己的圖標的話,那這種方法就不適合

下面附上系統提供幾種類型:

在appdelegate 中加上這個按壓手勢回調方法就行了

 

 1 - (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler{  2     //判斷先前我們設置的唯一標識
 3     if([shortcutItem.type isEqualToString:@"-11.UITouchText.share"]){  4         NSArray *arr = @[@"hello 3D Touch"];  5         UIActivityViewController *vc = [[UIActivityViewController alloc]initWithActivityItems:arr applicationActivities:nil];  6         //設置當前的VC 為rootVC
 7         [self.window.rootViewController presentViewController:vc animated:YES completion:^{  8             
 9 
10  }]; 11             
12     }else if ([shortcutItem.type isEqualToString:@"Three.3d.tou"]) 13  { 14         ThreeViewController *secod = [[ThreeViewController alloc]init]; 15  [nav pushViewController:secod animated:YES]; 16     
17     
18     
19  } 20 }

第二種:動態標簽(別人都是這么叫,有點不明所以然) 

這種方法就完全可以很好的彌補,第一個方法的缺點。但是它也是有一個缺點,就是直接app 裝上后運行過一次,才能喚出3d touch手勢,第一種是裝上就能。

廢話不多說,直接上代碼,

-(void)add3dtouch { /** * UIApplicationShortcutItem 創建標簽的類 * UIApplicationShortcutIcon 創建可變標簽的類 * UIApplicationShortcutItem 創建標簽ICON的類 */

// 添加系統自帶的icon-type
    UIApplicationShortcutIcon *icon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeHome]; UIApplicationShortcutItem *item = [[UIApplicationShortcutItem alloc]initWithType:@"mian" localizedTitle:@"首頁" localizedSubtitle:@"fristVC" icon:icon userInfo:nil]; // 添加自己的圖標
    UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"second"]; UIApplicationShortcutItem *item1 = [[UIApplicationShortcutItem alloc]initWithType:@"second" localizedTitle:@"SecondVC" localizedSubtitle:@"Second-sub-title" icon:icon1 userInfo:nil]; // 如果系統圖標不滿足需求,可以使用+ (instancetype)iconWithTemplateImageName:(NSString *)templateImageName; // 添加自定義圖片作為標簽,需要注意的是:圖片必須預先添加進bundle中
    UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"three.jpg"]; UIApplicationShortcutItem *item2 = [[UIApplicationShortcutItem alloc]initWithType:@"three" localizedTitle:@"ThreeVC" localizedSubtitle:@"Three-sub-title" icon:icon2 userInfo:nil]; // shortcutItems是一個數組
    [UIApplication sharedApplication].shortcutItems = @[item,item1,item2]; }

但是 需要注意的是 在調用這個方法的時候必須要判斷系統版本必要大於9.0,不然會崩

// 判斷系統版本大於9.0再設置 (若不判斷 在低版本系統中會崩潰)
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0){ [self add3dtouch]; }

回調方法和第一種方法,一樣就行了。

第三種: 觸發機制 參考 微信朋友圈 3dtouch打開圖片 然后向上滑動,下面出現一個菜單view

原博客地址:http://www.cnblogs.com/n1ckyxu/p/5096316.html

原博客 里講解的很詳細了,並且有demo鏈接,我在這里就不做解釋了,

 

個人認識,這種方法 相對於前面2種,比較麻煩一點,但是用途是不一樣的。前2種,是針對應用圖標上的3d touch的,但是第三種是針對應用中的3d touch 效果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM