iOS9新特性の3D-touch-上篇

iPhone6s&iPhone 6s plus發(fā)布也有一段時間了,最大的亮點應該就是3D-touch毋庸置疑了,第一時間體驗了之后最大的感受就是蘋果爸爸太給力了.......事實上我也從未見過第二家公司能把科技與易用性結合的如此天衣無縫的,當年5s指紋識別如此,今年的3D-touch亦如此.蘋果也開放了相關的api,作為一個開發(fā)者怎能不第一時間在自己的應用上面集成這個好玩的特性呢.

應用中使用3Dtouch有兩種方式:

  • 第一種是按壓圖標啟動應用的時候,類似于pc上面的右鍵,但是又不同于右鍵,我們可以把它理解為一個快速入口,能夠有效的減少用戶的操作量.這里我們只能使用輕按手勢shortCut.
  • 第二種則是應用內的集成了,比如短信列表我們可以輕按預覽短信內容,發(fā)現(xiàn)感興趣的話再稍微用力進入詳情頁面,事實上目前大多數(shù)集成了3Dtouch的app也大多數(shù)是應用在這個使用場景,即在list-detail之間加了一層預覽,變成了list-preview-detail.

上篇先寫一下第一種場景如何集成.
這時候我們的所有代碼都是在app delegate里面完成的,當然我們也可以寫一個分類方便給app delegate瘦身.

在app delegate的代理方法didFinishLaunchingWithOptions里面做如下操作:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    
    ///setup icons
    UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeCompose];
    UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeLocation];
    UIApplicationShortcutIcon *icon3 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypePause];
    UIApplicationShortcutIcon *icon4 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"favicon.png"];
    
    ///setup items
    UIMutableApplicationShortcutItem *item1 = [[UIMutableApplicationShortcutItem alloc] initWithType:@"first" localizedTitle:@"first item title" localizedSubtitle:@"first item detail title" icon:icon1 userInfo:nil];
    UIMutableApplicationShortcutItem *item2 = [[UIMutableApplicationShortcutItem alloc] initWithType:@"second" localizedTitle:@"second item title" localizedSubtitle:@"second item detail title" icon:icon2 userInfo:nil];
    UIMutableApplicationShortcutItem *item3 = [[UIMutableApplicationShortcutItem alloc] initWithType:@"third" localizedTitle:@"third item title" localizedSubtitle:@"third item detail title" icon:icon3 userInfo:nil];
    UIMutableApplicationShortcutItem *item4 = [[UIMutableApplicationShortcutItem alloc] initWithType:@"forth" localizedTitle:@"forth item title" localizedSubtitle:@"forth item detail title" icon:icon4 userInfo:nil];
    
    NSArray *items = @[item1,item2,item3,item4];
    
    [UIApplication sharedApplication].shortcutItems = items ;
    
    
    UIApplicationShortcutItem *item = [launchOptions valueForKey:UIApplicationLaunchOptionsShortcutItemKey];
    if (item) {
        NSLog(@"3d launch item is %@",item.localizedTitle);
    }else{
        NSLog(@"normal launch");
    }
    
    return YES;
}

代碼還是非常簡單的,就是創(chuàng)建四個圖標,然后創(chuàng)建四個item,然后給shortcutItems賦值一個數(shù)組就可以了.
需要注意的是,使用了iconWithTemplateImageName方法創(chuàng)建的自定義的圖標需要是正方形,單色,而且35*35point尺寸的,不然會顯示下面效果圖那種黑漆漆的效果.

Icons should be square, single color, and 35x35 points

而我們如果想監(jiān)聽是從哪個item啟動的應用,可以在以下方法里面操作:

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
{
    NSLog(@"selected item's title is %@",shortcutItem.description);
}

可以看到打印信息:

6.jpg

所以這里我們就可以通過shortcutItem.type來判斷從哪個入口進入的了,所以我們在調用- (instancetype _Nonnull)initWithType:(NSString * _Nonnull)type localizedTitle:(NSString * _Nonnull)localizedTitle localizedSubtitle:(NSString * _Nullable)localizedSubtitle icon:(UIApplicationShortcutIcon * _Nullable)icon userInfo:(NSDictionary * _Nullable)userInfo初始化item的時候,可以自定義一個枚舉來作為type參數(shù),方便以后判斷.

最終效果如下:

7.jpg

你可以在這里下載這個demo

一個問題:
微信實現(xiàn)的圖標居右是如何實現(xiàn)的呢?因為沒有找到相關的api,難道是通過runtime來修改title跟icon的frame來做到的?

好傻逼的問題,突然發(fā)現(xiàn)圖片左右是取決于圖標在屏幕上的問題........草草草草草

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末照卦,一起剝皮案震驚了整個濱河市纹磺,隨后出現(xiàn)的幾起案子斗忌,更是在濱河造成了極大的恐慌冯凹,老刑警劉巖只估,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異枢舶,居然都是意外死亡涂邀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門侍芝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來研铆,“玉大人,你說我怎么就攤上這事州叠】煤欤” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵咧栗,是天一觀的道長逆甜。 經常有香客問我,道長楼熄,這世上最難降的妖魔是什么忆绰? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮可岂,結果婚禮上错敢,老公的妹妹穿的比我還像新娘。我一直安慰自己缕粹,他們只是感情好稚茅,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著平斩,像睡著了一般亚享。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绘面,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天欺税,我揣著相機與錄音,去河邊找鬼揭璃。 笑死晚凿,一個胖子當著我的面吹牛,可吹牛的內容都是我干的瘦馍。 我是一名探鬼主播歼秽,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼情组!你這毒婦竟也來了燥筷?” 一聲冷哼從身側響起箩祥,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肆氓,沒想到半個月后袍祖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡做院,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年盲泛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片键耕。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡寺滚,死狀恐怖,靈堂內的尸體忽然破棺而出屈雄,到底是詐尸還是另有隱情村视,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布酒奶,位于F島的核電站蚁孔,受9級特大地震影響,放射性物質發(fā)生泄漏惋嚎。R本人自食惡果不足惜杠氢,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望另伍。 院中可真熱鬧鼻百,春花似錦、人聲如沸摆尝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽堕汞。三九已至勺爱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間讯检,已是汗流浹背琐鲁。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留人灼,地道東北人绣否。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像挡毅,于是被迫代替她去往敵國和親漠吻。 傳聞我的和親對象是個殘疾皇子桶略,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內容

  • 一烈拒、主屏幕快速選項(Home Screen Quick Actions) 主屏幕快速選項就是指在主屏幕上按壓應用i...
    wxlan閱讀 872評論 1 1
  • 1. 3D Touch的主要應用 官方文檔給出的應用介紹主要有兩塊: 1.A user can now press...
    DestinyFighter_閱讀 18,703評論 5 50
  • 專著:http://www.reibang.com/p/3443a3b27b2d 1.簡單的介紹一下3D Touc...
    violafa閱讀 1,015評論 1 0
  • 系列:iOS開發(fā)-單例模式 在我們做開發(fā)的時候經常會遇到需要在很多地方調用同一個對象的現(xiàn)象,比如在一個類中,我們可...
    spicyShrimp閱讀 376評論 0 3
  • 說來也巧镇饮,這個端午節(jié)是我工作一來第一次過節(jié)期間回家(除了春節(jié))。工作不允許也好耗绿,沒時間也好苹支,更多的是。误阻。债蜜。是一種一...
    LoenTusi閱讀 173評論 0 0