iOS 3D Touch(Home screen quick action && peek膀跌、pop)

今天工作任務(wù)不太緊,研究了一下3D Touch沮榜,主要總結(jié)了下Home screen quick action 和peep、pop兩塊。接下來(lái)讓我一一道來(lái)。老規(guī)矩雅任,參考的文章會(huì)在下面列出來(lái)。

Home screen quick action(主屏幕快速選項(xiàng))

關(guān)于主屏幕快速選項(xiàng)按鈕咨跌,有兩個(gè)設(shè)置方法椿访,分別為靜態(tài)添加和動(dòng)態(tài)代碼添加。現(xiàn)在先分別列舉出各自的實(shí)現(xiàn)方法虑润,然后在具體介紹各個(gè)參數(shù)的含義。

靜態(tài)添加:(info.plist)

靜態(tài)添加方式

實(shí)現(xiàn)效果:

靜態(tài)添加效果

其實(shí)上面每一條列表加酵,對(duì)應(yīng)的就是一個(gè)UIApplicationShortcutItem,接下來(lái)看一下這個(gè)類具體的參數(shù)含義:

UIApplicationShortcutItem類

接下來(lái)是動(dòng)態(tài)添加:

iOS 9之后Application添加了一個(gè)屬性

@property(nullable,nonatomic,copy)NSArray *shortcutItemsNS_AVAILABLE_IOS(9_0)__TVOS_PROHIBITED;

這個(gè)屬性就是用來(lái)動(dòng)態(tài)添加主屏幕快速選項(xiàng)的拳喻,具體的添加代碼為:

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {

UIApplicationShortcutIcon*icon1 = [UIApplicationShortcutIconiconWithType:UIApplicationShortcutIconTypePlay];

UIMutableApplicationShortcutItem*item1 = [[UIMutableApplicationShortcutItemalloc]initWithType:@"666"localizedTitle:@"paly"localizedSubtitle:@"打開(kāi)"icon:icon1userInfo:nil];

UIApplicationShortcutIcon*icon2 = [UIApplicationShortcutIconiconWithType:UIApplicationShortcutIconTypeShare];

UIMutableApplicationShortcutItem*item2 = [[UIMutableApplicationShortcutItemalloc]initWithType:@"777"localizedTitle:@"share"localizedSubtitle:@"分享"icon:icon2userInfo:nil];

[UIApplicationsharedApplication].shortcutItems=@[item1,item2];

returnYES;

}

到目前為止,相當(dāng)于創(chuàng)建了UIButton并添加到了相應(yīng)地View上面猪腕,剩下的就是添加點(diǎn)擊回調(diào)了冗澈。

-(void)application:(UIApplication*)applicationperformActionForShortcutItem:(UIApplicationShortcutItem*)shortcutItem completionHandler:(void(^)(BOOLsucceeded))completionHandler NS_AVAILABLE_IOS(9_0);

通過(guò)點(diǎn)擊,系統(tǒng)回調(diào)如上的方法陋葡,返回相應(yīng)地shortcutItem亚亲。接下來(lái)就可以根據(jù)相應(yīng)地屬性值來(lái)做區(qū)分進(jìn)行相應(yīng)地操作了,如下是打斷點(diǎn)獲取到的參數(shù)詳情腐缤。


shortcutItem回調(diào)值

到這里基本的主屏幕快速選項(xiàng)操作個(gè)人認(rèn)為就差不多了捌归,接下來(lái)就是幾個(gè)需要注意的小坑:

1)最多只會(huì)顯示4個(gè)Item,也就是說(shuō)無(wú)論你往數(shù)組里面放多少個(gè)岭粤,都只會(huì)顯示四個(gè)

2)當(dāng)靜態(tài)惜索,動(dòng)態(tài)兩種方法同時(shí)存在的時(shí)候,會(huì)先讀取靜態(tài)添加的Item剃浇,然后才會(huì)進(jìn)行動(dòng)態(tài)添加巾兆。


Peek && pop(預(yù)覽與跳轉(zhuǎn))

首先借用一下網(wǎng)友對(duì)該功能的理解。

現(xiàn)在你可以授權(quán)應(yīng)用的視圖控制器來(lái)響應(yīng)用戶不同的按壓力量虎囚。隨著用戶按壓力量的增加角塑,交互會(huì)出現(xiàn)三個(gè)階段:

1. 暗示內(nèi)容預(yù)覽是可使用的

2. 展示預(yù)覽(peek),和快捷選項(xiàng)菜單(peek quick actions)

3. 可選的跳轉(zhuǎn)到預(yù)覽中的視圖(pop)

當(dāng)你使用 peek 和 pop 時(shí),系統(tǒng)通過(guò)壓力決定從哪個(gè)階段過(guò)度至下一個(gè)

在App內(nèi)使用該功能之前淘讥,最好先檢測(cè)一下設(shè)備是否支持3D Touch功能圃伶,iOS9中添加了UIForceTouchCapability這一屬性,可在ViewWillAppear中調(diào)用下面方法進(jìn)行判斷,如果設(shè)備不支持的話留攒,火蜥可以替換成長(zhǎng)按等其他響應(yīng)手勢(shì)煤惩。

if(self.traitCollection.forceTouchCapability==UIForceTouchCapabilityAvailable)

另外還可以對(duì)手勢(shì)改變進(jìn)行監(jiān)聽(tīng),如果用戶在使用過(guò)程中修改了3D Touch設(shè)置炼邀,則會(huì)觸發(fā)方法回調(diào)

-(void)traitCollectionDidChange:(UITraitCollection*)previousTraitCollection

確定了3D Touch功能可用之后魄揉,就可以對(duì)視圖進(jìn)行注冊(cè)。

- (id)registerForPreviewingWithDelegate:(id)delegate sourceView:(UIView*)sourceView ?NS_AVAILABLE_IOS(9_0);

在這之后拭宁,只要該視圖響應(yīng)了Touch手勢(shì)洛退,就會(huì)觸發(fā)下面的方法回調(diào),只要在這個(gè)方法里返回想要進(jìn)行預(yù)覽展示的UIViewController就可以了杰标。

- (UIViewController*)previewingContext:(id)previewingContext viewControllerForLocation:(CGPoint)location

如果在預(yù)覽頁(yè)面向上滑動(dòng)的話兵怯,則會(huì)彈出UIPreviewAction,具體的實(shí)現(xiàn)應(yīng)該在所預(yù)覽的ViewController中實(shí)現(xiàn)腔剂,-(NSArray>*)previewActionItems媒区,唯一需要注意的是數(shù)組中可添加UIPreviewAction 和 UIPreviewActionGroup兩種類型的參數(shù)。

最后掸犬,如果在peek的基礎(chǔ)上繼續(xù)用力按壓的話袜漩,則會(huì)觸發(fā)pop效果,具體的調(diào)用方法是

-(void)previewingContext:(id)previewingContext commitViewController:(UIViewController*)viewControllerToCommit

經(jīng)過(guò)測(cè)試測(cè)試發(fā)現(xiàn)湾碎,在該回調(diào)方法中宙攻,你可以直接對(duì)這個(gè)該返回VC進(jìn)行操作,也可以另外創(chuàng)建VC進(jìn)行彈出操作介褥,具體彈出調(diào)用的方法為:

[self showViewController:viewControllerToCommit sender:self];

到這里應(yīng)該基本的功能實(shí)現(xiàn)就差不多了座掘,其實(shí)感覺(jué)下面參考文章中總結(jié)的更好些,之所以從新總結(jié)一遍是想強(qiáng)迫自己把代碼從頭敲一遍柔滔。如果發(fā)現(xiàn)上面理解錯(cuò)誤的地方請(qǐng)指出溢陪,我們一起探討。

參考文章:

淺談3D Touch(1) -- Home screen quick action

淺談3D Touch(2) -- UITouch && Peek && Pop

【文檔】在iPhone上使用3D Touch

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末廊遍,一起剝皮案震驚了整個(gè)濱河市嬉愧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌喉前,老刑警劉巖没酣,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異卵迂,居然都是意外死亡裕便,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門见咒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)偿衰,“玉大人,你說(shuō)我怎么就攤上這事∠卖幔” “怎么了缤言?”我有些...
    開(kāi)封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)视事。 經(jīng)常有香客問(wèn)我胆萧,道長(zhǎng),這世上最難降的妖魔是什么俐东? 我笑而不...
    開(kāi)封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任跌穗,我火速辦了婚禮,結(jié)果婚禮上虏辫,老公的妹妹穿的比我還像新娘蚌吸。我一直安慰自己,他們只是感情好砌庄,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布羹唠。 她就那樣靜靜地躺著,像睡著了一般娄昆。 火紅的嫁衣襯著肌膚如雪肉迫。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天稿黄,我揣著相機(jī)與錄音,去河邊找鬼跌造。 笑死杆怕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的壳贪。 我是一名探鬼主播陵珍,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼违施!你這毒婦竟也來(lái)了互纯?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤磕蒲,失蹤者是張志新(化名)和其女友劉穎留潦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辣往,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兔院,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了站削。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坊萝。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出十偶,到底是詐尸還是另有隱情菩鲜,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布惦积,位于F島的核電站接校,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏荣刑。R本人自食惡果不足惜馅笙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望厉亏。 院中可真熱鬧董习,春花似錦、人聲如沸爱只。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)恬试。三九已至窝趣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間训柴,已是汗流浹背哑舒。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留幻馁,地道東北人洗鸵。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像仗嗦,于是被迫代替她去往敵國(guó)和親膘滨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 前言 關(guān)于這篇文章 由于iPhone 6S發(fā)布不到一年的時(shí)間稀拐,很多新特性火邓、新技術(shù)還未普遍,不管是3D Touch的...
    Tangentw閱讀 4,502評(píng)論 8 18
  • 1.簡(jiǎn)單的介紹一下3D Touch 3D Touch的觸控技術(shù)德撬,被蘋果稱為新一代多點(diǎn)觸控技術(shù)铲咨。其實(shí),就是此前在Ap...
    Camille_chen閱讀 12,062評(píng)論 19 33
  • 專著:http://www.reibang.com/p/3443a3b27b2d 1.簡(jiǎn)單的介紹一下3D Touc...
    violafa閱讀 1,017評(píng)論 1 0
  • 3D Touch介紹 從iPhone 6s開(kāi)始蜓洪,產(chǎn)品都添加了一項(xiàng)硬件屬性鸣驱,叫做3D touch。作為屏幕的一部分蝠咆,...
    歪筆書生_閱讀 616評(píng)論 0 0
  • 看完了《驢得水》踊东,真的是一部好電影北滥。 節(jié)奏明快,人物鮮明闸翅,這樣的電影再芋,現(xiàn)在不多見(jiàn)。 看完電影坚冀,你仍然會(huì)有很深刻的印...
    女孩為何不扎馬尾閱讀 308評(píng)論 2 1