1.什么是3D Touch?
3D Touch屬于一種人機交互的一種方式,具體點用戶與手機屏幕的一種交互方式。在3D Touch出現前看看現有的一些用戶與手機屏幕的交互方式有哪些?
現有的交互方式:點按,雙擊,長按,捏合,旋轉,拖動,輕掃,快速滑動
官方介紹:iOS Human Interface GuidelinesBeta Gesture
總結以上的交互都是在一個二維的界面上根據接觸的區域、時間、速度、方向,次數等維度,計算得出一種用戶的手勢操作
3D Touch是從一個新的維度出創建一種交互方式
3D Touch是觸摸屏的壓力感應功能。是在二維的Multi-Touch觸摸屏基礎上添加了可以對用戶按壓屏幕的力度大小作出響應于反饋的功能。3D Touch不是Apple的一個使用壓力感應的產品,之前已經在MacBook和Apple Watch上使用,不過之前的叫Force Touch.Force Touch是3D Touch的雛形。他只可以區分輕觸和重壓。
官方介紹:iOS Human Interface GuidelinesBeta 3D Touch
這里提及一下Android平臺上的壓力感應功能。華為 128GB Mate S支持Force Touch技術,這是Force Touch 第一次應用在手機(比蘋果還早,蘋果之前使用在了電腦上)。Synaptics(新思國際)提供完整的解決方案Clear Force。
2.3D Touch應用場景分析
應用外的快速導航
在桌面時,用力按app icon,會彈出一個快速導航的列表,點擊相應的選項會進入相應的頁面
應用內的預覽于選擇
某音樂類APP 首頁點擊一個歌單,會有這個歌單的預覽于一些操作
3.3D Touch Demo
以上講的都是一些感念于效果表現,現在是代碼層面的分析。主要是以下四種情況:
Home Screen Quick Actions? (應用外的快速導航)
Static quick actions靜態標簽
Static quick actions are available to the userimmediately upon app installation. Define Home screen static quick actions in your app’sInfo.plistfile in theUIApplicationShortcutItemsarray.
就是在info.plist的文件中添加UIApplicationShortcutItems數組就可以使用了,具體數組里面的配置下面會有說明,還有一點需要強調的是,使用靜態標簽是程序安裝以后就可以立即使用了。
UIApplicationShortcutItemType(required) 這個鍵值設置一個快捷通道類型的字符串
UIApplicationShortcutItemTitle(required) 這個鍵值設置標簽的標題
UIApplicationShortcutItemSubtitle 設置標簽的副標題
UIApplicationShortcutItemIconType 設置標簽Icon類型
UIApplicationShortcutItemIconFile設置標簽的Icon文件
UIApplicationShortcutItemUserInfo 設置信息字典(用于傳值)
Dynamic quick actions動態標簽
Dynamic quick actions are available to the userafter first launch. Define Home screen dynamic quick actions with theUIApplicationShortcutItem,UIMutableApplicationShortcutItem, andUIApplicationShortcutIconclasses. Add dynamic quick actions to your app’s shared UIApplication object using theshortcutItemsproperty.
動態標簽是在程序初始化之后,才可以去配置的,UIApplicationShortcutItem, UIMutableApplicationShortcutItem, and UIApplicationShortcutIcon classes這3個類創建一個標簽,UIApplication的shortcutItems管理整個app的標簽。
動態標簽需要注意的兩點:1.動態的標簽修改不了已有的靜態標簽2.動態標簽初始化一次以后會保留在shortcutItems不需要每次都創建
Home Screen Quick Actions?的樣式
圖標在那邊展示是系統根據當前app icon的位置決定的,會自動調整,圖標只能使用系統的圖片或者是打包在bundle中的圖片。
Home Screen Quick Actions?的響應方法
類似推送,當我們點擊標簽進入應用程序時,也可以進行一些操作,我們可以在AppDelegate中增加了這樣一個方法,在方法中可以做一些頁面跳轉等需求:
- (void)application:(UIApplication*)application performActionForShortcutItem:(UIApplicationShortcutItem*)shortcutItem completionHandler:(void(^)(BOOL))completionHandler;
UIKit Peek and Pop
To supportpeek and popon 3D Touch-capable devices, the iOS 9 SDK includes:
New methods in theUIViewControllerclass forregisteringandunregisteringa view controller for participation in 3D Touch
New view controller protocols (UIViewControllerPreviewingDelegate) to support 3D Touch
To supportpeek quick actions, the iOS 9 SDK includes:
The newUIPreviewActionandUIPreviewActionGroupclasses
The newUIPreviewActionItemprotocol
增加了一個protocol UIViewControllerPreviewingDelegate
在UIViewController類中增加了注冊和取消注冊的Delegate的方法
具體看代碼demo
Web View Peek and Pop
導入WebKit的文件,
創建一個WKWebView對象,設置allowsLinkPreview=true
WKWebView和SFSafariViewController#importWKWebView *webView =
[[WKWebView alloc]initWithFrame:self.view.bounds];
[self.view addSubview:webView];
[webView loadRequest:
[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://www.baidu.com/"]]];
// 需要設置為true才有預覽的功能
webView.allowsLinkPreview = true;
safari瀏覽器
Force Properties in UITouch Objects
3D Touch在UITouch類中增加了兩個屬性force?和maximumPossibleForce
The force of the touch, where a value of 1.0 represents the force of an average touch (predetermined by the system, not user-specific). (read-only)
Force反應當前壓力的大小,1.0標示平均值。如果使用 Apple Pencil時,還需要計算altitudeAngle
The maximum possible force for a touch. (read-only)
maximumPossibleForce是Force的最大值
如果你監控touchesBegan,touchesMoved,touchesEnded這3個放回就可以拿到UITouch,從而回到到這兩個屬性值。
自己寫的demo,文中的展示的程序也使用了apple文檔中的程序,以下的鏈接中找到。
寫這篇文章時引用的資料鏈接
2015年蘋果秋季新品發布會(中文翻譯)
3D Touch開發初體驗(模擬器使用3DTouch)