iOS 3D touch開發(三) Force Properties-按壓力度
3D touch介紹
3D touch 是ios9+、iphone6s+的新功能,簡單的說3Dtouch就是用力按壓,通過3Dtouch增加了一組手勢交互方式。
3D touch主要常見的使用:
1:Home Screen Quick Actions (主屏快捷行為入口)
2:peek and pop (預覽和彈出)
3: Web view peek and pop API (HTML鏈接預覽功能)
4:Force Properties (按壓力度)
前一篇文章介紹了peek and pop (預覽和彈出)和Web view peek and pop API,本文主要介紹Force Properties (按壓力度)
介紹
ios9中添加在UITouch中添加了2個屬性,用于感知手指按下的力度
force : 手指按下的力度
maximumPossibleForce : 最大可能的力度
有了這兩個屬性,就可以做出更多的用戶體驗,比如繪畫時候可以根據按下的力度去選擇筆觸的粗細等等
代碼實現
我寫個簡單的demo,在上一篇文章的詳細頁面中追加代碼,手指按住詳細頁中的UIView時,手指在屏幕上慢慢增加力度在減少力度,可以看到view背景色的變化。
進入詳細頁的方式: table隨便選擇一個cell,用力touch彈出預覽,再次用力touch進入details頁
代碼:
我們修改UIVIewController的touchesMoved方法,獲取到touch對象和force,maximumPossible數據,然后用這個數據重新構造背景色。
overridefunctouchesMoved(touches:Set,withEventevent:UIEvent?){iftraitCollection.forceTouchCapability==.Available{lettouch=touches.firstNSLog("\nforce:%f,maximumPossibleForce:%ff",touch!.force,touch!.maximumPossibleForce)view.backgroundColor=UIColor(red:0.5,green:0.5,blue:(touch?.force)!/(touch?.maximumPossibleForce)!,alpha:100)}}
demo