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ㄒ)/~~)

目录
相关文章
|
4月前
|
Web App开发 存储 Android开发
update_engine简介
update_engine简介
57 5
|
4月前
|
存储 关系型数据库 OLTP
X-Engine
阿里云数据库产品事业部自主研发的OLTP数据库存储引擎X-Engine,已经成功应用在阿里集团内部的核心业务系统,包括交易历史库、钉钉历史库等,不仅大幅降低了业务成本,同时作为双十一大促的关键数据库技术,成功承受了数百倍平时流量的冲击。
55 2
|
SQL 关系型数据库 MySQL
MySQL AUTO_INCREMENT 原理解析
在关系型数据库MySQL中,AUTO_INCREMENT是数据库的一个属性,该属性使得在申明了AUTO_INCREMENT的列中可以自动生成唯一的递增值。本文详细介绍了在InnoDB及MyISAM引擎中AUTO_INCREMENT的使用原理及一些容易被忽略的问题。
|
11月前
|
关系型数据库 MySQL Shell
MySQL报错:Got error 28 from storage engine
MySQL报错:Got error 28 from storage engine
|
SQL 关系型数据库 MySQL
MySQL:ERROR 1286 (42000): Unknown storage engine 'MyISAM'
MySQL:ERROR 1286 (42000): Unknown storage engine 'MyISAM'
133 0
|
存储 算法 关系型数据库
【MySQL】default-storage-engine=MyIsam,是干什么的?底层原理是什么?
【MySQL】default-storage-engine=MyIsam,是干什么的?底层原理是什么?
447 0
|
SQL 关系型数据库 MySQL
MySQL中ENGINE=InnoDB、AUTO_INCREMENT的意思
MySQL中ENGINE=InnoDB、AUTO_INCREMENT的意思
|
MySQL 关系型数据库 PHP
mysql的auto_increment详解
转载http://blog.csdn.net/fwkjdaghappy1/article/details/7663331 auto_increment的基本特性 MySQL的中AUTO_INCREMENT类型的属性用于为一个表中记录自动生成ID功能,可在一定程度上代替Oracle,PostgreSQL等数据库中的sequence。
1630 0