ios的震动反馈

最近写 ios TableView 加入长按的手势后,希望在 cell 长按弹窗的同时加入震动反馈效果。

查询后发现一个可用的震动方法:

1.导入 #import<AudioToolbox/AudioToolbox.h>

2.调用 AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

这样就可以实现震动。

但震动很暴力,力度大,时间大概1s。感受很差。个人觉得像 twitter 上点赞那种震动感觉,或者像 iphone7 home 键的震动反馈,或者系统自带的 DatePicker 翻动时的触感都很棒。


后来发现上面函数可以传入其他参数来达到轻微震动效果:


// 普通短震,3D Touch 中 Peek 震动反馈
AudioServicesPlaySystemSound(1519);
// 普通短震,3D Touch 中 Pop 震动反馈
AudioServicesPlaySystemSound(1520);
// 连续三次短震
AudioServicesPlaySystemSound(1521);

注意:这里调用的是非公开 API。


另外 ios10 后加入的 UIImpactFeedbackGenerator ,提供了更好的震动效果。

调用也很简单:


UIImpactFeedbackGenerator*impactLight = [[UIImpactFeedbackGeneratoralloc]initWithStyle:UIImpactFeedbackStyleLight]; 
[impactLight impactOccurred];

震动有多个模式可选。


typedefNS_ENUM(NSInteger, UIImpactFeedbackStyle) {

    UIImpactFeedbackStyleLight,

    UIImpactFeedbackStyleMedium,

    UIImpactFeedbackStyleHeavy

};

注意:UIImpactFeedbackGenerator 只在 iphone7 后手机才会产生震动。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文使用底层接口,实现 iOS 设备上的连续震动,以及连续播放系统声音(不是音乐播放器) 主要功能函数 首先实现上...
    煜寒了阅读 17,750评论 24 40
  • 只是简单的实现功能,使用GCD延迟循环调用,主要是swift对gcd写法的改变,可以写个单例,全局调用,方法内部可...
    Da辰阅读 1,582评论 0 0
  • 前言 TapticEngine是什么总的来说,TapticEngine是苹果产品上推出的全新震动模块名称,最早出现...
    深蓝_S阅读 32,797评论 3 22
  • 最近真的是好久没有写简书了, 期间有无数次冲动想认真写一篇, 可是总挤不出整块的时间来写. 还有一个原因就是总觉得...
    Pusswzy阅读 12,981评论 16 32
  • 文:薛善强 我还没有来得及欣赏这春天的景色已经悄然落下帷幕。早春的花朵已经落尽,还会有些花陆续开放,这样的春天才会...
    薛善强阅读 378评论 0 0