前几天元旦的时候,用iMessage
发“新年快乐”的时候,苹果给出了放烟花的彩蛋。
这个倒是还不是很令人吃惊,真正令人吃惊的是手机的震动真的跟放烟花的节奏一模一样,苹果的震动处理真的是吓人。包括Macbook上的触摸板震动,以前我还真的以为是可以按下去的,直到有一天电脑死机了才知道是震动反馈。。
正好趁着这个机会把苹果从iOS9就开始使用的震动反馈拿出来看看。
其实在发布iOS9中的 force touch就是用了这个,只不过当时苹果并没有开放api给开发者使用。
这不,iOS 10发布之后,苹果果然就把这个接口开放了出来。
UIFeedbackGenerator
UIFeedbackGenerator
是整个震动反馈的核心,它只有一个方法
- (void)prepare;
他的作用就是让响应立刻发生,如果不调用这个方法的话,可能会发生延时,而且多次调用这个方法也没问题,他是安全的。
UINotificationFeedbackGenerator
UINotificationFeedbackGenerator
才是真正需要我们写的东西,其实他里边的东西也不多,只有三个属性
UINotificationFeedbackTypeSuccess
UINotificationFeedbackTypeWarning
UINotificationFeedbackTypeError
分别在成功、警告和错误时调用。
具体的调用方法就是这样:
+ (void)executeSuccessFeedback
{
UINotificationFeedbackGenerator *generator = [[UINotificationFeedbackGenerator alloc] init];
[generator notificationOccurred:UINotificationFeedbackTypeSuccess];
}
UIImpactFeedbackGenerator
UIImpactFeedbackGenerator
是另外一个类型的震动,同样也拥有三种形式
UIImpactFeedbackStyleLight
UIImpactFeedbackStyleMedium
UIImpactFeedbackStyleHeavy
分别是轻度、中度和重度。
调用的方法也很简单:
+ (void)excuteLightFeedback
{
UIImpactFeedbackGenerator *generator = [[UIImpactFeedbackGenerator alloc] initWithStyle: UIImpactFeedbackStyleLight];
[generator prepare];
[generator impactOccurred];
}
UISelectionFeedbackGenerator
UISelectionFeedbackGenerator
中只有一个类型,是用来模拟选择滚轮一类控件时的震动,比如计时器中的picker滚动时就有这个效果。
+ (void)excuteSelectionFeedback
{
UISelectionFeedbackGenerator *generator = [[UISelectionFeedbackGenerator alloc] init];
[generator selectionChanged];
}
Demo
最后放Demo,下载下来用真机跑一下按按就知道什么感觉啦。