閱讀204 返回首頁    go 技術社區[雲棲]


Taptic Engine初探

簡述

Taptic Engine 是蘋果的觸覺反饋技術,其中Taptic演變自Haptic,即觸覺。
Taptic Engine目前已經應用在蘋果全線設備中。它讓Apple Watch震動時有手腕被人拍了一下的感覺。讓MacBook觸摸板有以假亂真的觸感(Force Touch)。而在iPhone上,除了實現了3D Touch讓屏幕多了一維交互外,還實現了虛擬Home鍵的反饋效果,甚至還提供了一套Taptic API供開發者實現自己的震動反饋。

何時使用觸摸反饋

為了保證所有app體驗的一致性,蘋果總結了適合觸摸反饋的場景,收錄於iOS Human Interface Guidelines中,規範中將觸摸反饋的使用場景分為三類:Notification、Impact和Seleciton。

Notification用來表示成功、失敗或者警告的反饋,Impact用於加強用戶對物理碰撞體驗,Selection用於表示用戶選擇區域的變化。
蘋果在其官方文檔裏反複強調了在用戶確定需要反饋的時候再使用,不要因為觸摸反饋帥就亂用,再加上觸摸反饋隻支持iPhone 7/7P,因此在設計觸摸反饋時一定要考慮使用場景,不能讓有觸摸反饋的用戶覺得幹擾,也不能影響沒有觸摸反饋用戶的體驗。 文檔裏囉囉嗦嗦了這麼多蘋果爸爸你倒是什麼時候給電話接通加個震動提醒啊,這很符合Notification.Success的場景好嗎

Taptic API

和iOS Human Interface Guidelines對應,Tapic API用三個子類 UIImpactFeedbackGeneratorUISelectionFeedbackGeneratorUINotificationFeedbackGenerator 來代表三種不同類型的震動。
無論是哪種震動,調用的套路基本相同:

  1. 實例化FeedbackGenerator
  2. 調用prepare方法。(非必須)手動調用prepare的好處是可以預先初始化FeedbackGenerator,這樣在需要觸發震動的時候可以立即響應。當然在實時性不是很強的操作上不調用prepare也沒什麼關係。
  3. 調用震動方法。不同類型的實例調用的方式不同,比如UIImpactFeedbackGenerator調用的是impactOccurred,而UISelectionFeedbackGenerator調用selectionChanged。
  4. 釋放FeedbackGenerator。(非必須)即把FeedbackGenerator實例設為nil。

我寫了個包括各種類型觸摸反饋的demo,需要體驗的可以戳這裏。 (PS:親測demo中的方法都不支持6s, 6s用戶表示憂傷,明明我6s用戶有Taptic硬件啊/(ㄒoㄒ)/~~)

最後更新:2017-10-25 11:34:42

  上一篇:go  JVM性能監控常用命令-1
  下一篇:go  使用FBSimulatorControl做模擬器適配測試