iOS 3DTouch 的開發套路大全

來源:互聯網
上載者:User

標籤:

今天休息,先來無事就自己看了一下,關於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 效果

 

iOS 3DTouch 的開發套路大全

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.