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