3D Touch功能的開(kāi)發(fā)難度其實(shí)不大,但是由于該功能需要有硬件支持,并且在摹擬器上沒(méi)法體驗(yàn),所以阻擋了1大批開(kāi)發(fā)者的探索腳步。不過(guò)在計(jì)算機(jī)界歷來(lái)沒(méi)有能難倒程序員的問(wèn)題,本文首先將介紹如何使用3D Touch的Home Screen Quick Actions功能,然后介紹如何在摹擬器中使用3D Touch。
3D Touch有2大模塊:
1、Home Screen Quick Actions
通過(guò)主屏幕的利用Icon,我們可以用3D Touch呼出1個(gè)菜單,進(jìn)行快速定位利用功能模塊相干功能的開(kāi)發(fā),。如微信、京東的App,本文也將重點(diǎn)介紹這項(xiàng)開(kāi)發(fā)技術(shù)。
2、Force Properties
iOS9為我們提供了1個(gè)新的交互參數(shù):力度。我們可以檢測(cè)某1交互的力度值,來(lái)做相應(yīng)的交互處理。例如,我們可以通過(guò)力度來(lái)控制快進(jìn)的快慢,音量增加的快慢等。
3D Touch快速入口標(biāo)簽有兩種添加方式:1種是靜態(tài)添加,在工程中的info.plist文件中添加相干項(xiàng)目。通過(guò)這類(lèi)方式添加的標(biāo)簽,在app第1次運(yùn)行前,就能夠喚出這些標(biāo)簽;另外一種是動(dòng)態(tài)添加,通過(guò)代碼給App添加快速入口。這類(lèi)方式添加的標(biāo)簽,第1次運(yùn)行App前是看不到這些標(biāo)簽的,必須先運(yùn)行1次App,以后就能夠喚出這些標(biāo)簽了。
靜態(tài)添加入口標(biāo)簽不需要寫(xiě)代碼,只需要在info.plist文件中添加相干功能設(shè)置便可。不過(guò)由于沒(méi)有語(yǔ)句提示,所以我們只能1個(gè)字母1個(gè)字母的去添加,這1點(diǎn)不是很友好。
我們需要在info.plist中添加以下信息:
分析1下添加的項(xiàng)目分別代表甚么意思。
首先是UIApplicationShortcutItems,他是1個(gè)數(shù)組類(lèi)型,數(shù)組中的每個(gè)元素表示1個(gè)入口標(biāo)簽。
然后是Item0,這是數(shù)組中的1個(gè)元素,字典類(lèi)型。在這個(gè)字典中配置各個(gè)標(biāo)簽的相干屬性。
字段名 | 功能 | 是不是必須 | 備注 |
---|---|---|---|
UIApplicationShortcutItemType | 這個(gè)鍵值設(shè)置1個(gè)快捷通道類(lèi)型的字符串 | 必有項(xiàng) | 我們可以監(jiān)聽(tīng)該項(xiàng)的值來(lái)判斷用戶(hù)是從哪個(gè)標(biāo)簽進(jìn)入App的,該字段的值可以為空。 |
UIApplicationShortcutItemTitle | 這個(gè)鍵值設(shè)置標(biāo)簽的標(biāo)題 | 必有項(xiàng) | 我們可以監(jiān)聽(tīng)該項(xiàng)的值來(lái)判斷用戶(hù)是從哪個(gè)標(biāo)簽進(jìn)入App的 |
UIApplicationShortcutItemSubtitle | 設(shè)置標(biāo)簽的副標(biāo)題 | 可選項(xiàng) | |
UIApplicationShortcutItemIconType | 設(shè)置標(biāo)簽的圖標(biāo)樣式,系統(tǒng)提供了29中樣式的圖標(biāo),但大部份只能在9.1的系統(tǒng)上使用,只有少數(shù)可以在9.0的系統(tǒng)中使用,這1部份會(huì)在后邊詳細(xì)介紹 | 可選項(xiàng) | |
UIApplicationShortcutItemIconFile | 設(shè)置自定義標(biāo)簽圖片文件的路徑 | 可選項(xiàng) | |
UIApplicationShortcutItemUserInfo | 設(shè)置用戶(hù)信息,是1個(gè)字典類(lèi)型,可以用來(lái)傳值 | 可選項(xiàng) |
依照如上截圖配置info.plist文件后,我們運(yùn)行程序,然后按壓icon,出現(xiàn)的是以下效果:
這是在UIApplicationShortcutItems中添加了1個(gè)Item的情況,只添加了1個(gè)標(biāo)簽,如果想添加多個(gè)靜態(tài)標(biāo)簽,依樣畫(huà)葫蘆出多個(gè)Item便可。
這類(lèi)方法需要我們寫(xiě)代碼來(lái)添加,首先來(lái)認(rèn)識(shí)3個(gè)類(lèi):
類(lèi)名 | 功能描寫(xiě) |
---|---|
UIApplicationShortcutItem | 創(chuàng)建標(biāo)簽的類(lèi) |
UIMutableApplicationShortcutItem | 創(chuàng)建可變標(biāo)簽的類(lèi) |
UIApplicationShortcutIcon | 創(chuàng)建標(biāo)簽ICON的類(lèi) |
我們創(chuàng)建1個(gè)新工程,然后在工程中根視圖的viewDidLoad方法中添加以下代碼:
上邊的代碼,第1步創(chuàng)建出標(biāo)簽的入口,這1步的配置與靜態(tài)添加標(biāo)簽中的UIApplicationShortcutItemIconType目的1樣。系統(tǒng)給我們提供了以下樣式的標(biāo)簽:
如果系統(tǒng)圖標(biāo)不滿(mǎn)足需求,可使用+ (instancetype)iconWithTemplateImageName:(NSString *)templateImageName;添加自定義圖片作為標(biāo)簽,需要注意的是:圖片必須預(yù)先添加進(jìn)bundle。
第2步是創(chuàng)建1個(gè)標(biāo)簽,并進(jìn)行相干配置,這1步與靜態(tài)添加標(biāo)簽中的Item01樣,初始化中的相干設(shè)置和上邊1模1樣,不多啰嗦。
第3步是將標(biāo)簽添加進(jìn)pplication的shortcutItems中,如果想添加多個(gè)標(biāo)簽,可以創(chuàng)建多個(gè)UIApplicationShortcutItem對(duì)象,并加入數(shù)組中。
添加完后,我們?cè)俅芜\(yùn)行程序查看效果:
標(biāo)簽添加完成了,現(xiàn)在我們可以通過(guò)兩種途徑來(lái)啟動(dòng)App,1種是傳統(tǒng)的點(diǎn)擊icon圖標(biāo)啟動(dòng)App,另外一種是通過(guò)按壓icon喚起快速入口,通過(guò)快速入口進(jìn)入App中指定的功能頁(yè)面。我們要如何檢測(cè)是從哪里進(jìn)入App呢?
iOS9在AppDelegated中提供了1個(gè)新方法:- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler,如果App是從快速入口啟動(dòng)的,則會(huì)履行這個(gè)方法。該方法的shortcutItem參數(shù)攜帶了從快速入口進(jìn)入app時(shí)的標(biāo)簽參數(shù)。
如果是從快速入口啟動(dòng)的App,我們可以判斷shortcutItem.localizedTitle屬性的值來(lái)判斷是從哪個(gè)標(biāo)簽進(jìn)入的App。
來(lái)1個(gè)需求:如果是從“點(diǎn)我”這個(gè)標(biāo)簽進(jìn)來(lái)的,我們把頁(yè)面背景色彩修改成黃色,如果是從“么么噠”這個(gè)標(biāo)簽進(jìn)來(lái)的,我們講頁(yè)面背景色彩修改成紅色。代碼以下:
上邊我們講了這么多,還是需要在iphone6s中來(lái)驗(yàn)證效果。對(duì)沒(méi)有裝備的同學(xué)們?cè)鯓愚k呢?我們可以安裝1些插件,來(lái)讓摹擬器支持1下3D Touch中的Home Screen Quick Actions模塊功能。
首先我們需要在gitHub中下載1個(gè)插件,這個(gè)插件只能安裝在Xcode7中。地址在這里:https://github.com/DeskConnect/SBShortcutMenuSimulator
剩下的依照這個(gè)頁(yè)面的指引操作就能夠了。為了照顧1下懶得看英文的同學(xué),在這里我把操作步驟羅列出來(lái)。
1、 在終端中輸入命令git clone https://github.com/DeskConnect/SBShortcutMenuSimulator.git克隆該插件到本地。
2、 繼續(xù)輸入命令cd SBShortcutMenuSimulator進(jìn)入插件所在文件夾
3、輸入命令make安裝插件
1、輸入命令xcrun simctl spawn booted launchctl debug system/com.apple.SpringBoard --environment DYLD_INSERT_LIBRARIES=$PWD/SBShortcutMenuSimulator.dylib和xcrun simctl spawn booted launchctl stop com.apple.SpringBoard啟動(dòng)插件
2、輸入命令來(lái)喚起某個(gè)App的Home Screen Quick Actions功能:echo 'com.apple.mobilecal' | nc 127.0.0.1 8000。其中的com.apple.mobilecal是你的bundle id。命令履行效果以下:
我們把bundle id換為我們剛剛寫(xiě)的工程的ID,測(cè)試1下echo 'quanzheng.-DTouchDemo' | nc 127.0.0.1 8000