美文网首页iOS
Swift实现模仿微信摇一摇功能

Swift实现模仿微信摇一摇功能

作者: 89aa04642c48 | 来源:发表于2016-03-16 23:24 被阅读918次

先附上demo地址
https://github.com/w11p3333/shakeDemo/tree/master
iOS自带了识别摇动的功能,实现起来非常简单,只需要

  /**
    开启摇动感应
    */
    UIApplication.sharedApplication().applicationSupportsShakeToEdit = true
    becomeFirstResponder()

然后只需要实现它的三个方法

  /**
 开始摇动
 */
override func motionBegan(motion: UIEventSubtype, withEvent event: UIEvent?) 

  /**
 取消摇动
 */
override func motionCancelled(motion: UIEventSubtype, withEvent event: UIEvent?)

 /**
 摇动结束
 */
override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent?)

第一步
首先我们用xib搭建一个界面,注意上下其实是两张图片,等会就是控制它们的frame实现摇动效果,然后我们导入摇一摇的音效

Snip20160316_10.png

第二步,连线xib并导入AVFoundation框架并遵守AVAudioPlayerDelegate

 import AVFoundation
@IBOutlet weak var rockup: UIImageView!
@IBOutlet weak var rockdown: UIImageView!

var player: AVAudioPlayer?

第三步,实现开始动画

   /**
 开始摇动
 */
override func motionBegan(motion: UIEventSubtype, withEvent event: UIEvent?) {
    
    print("开始摇动")
    
    //开始动画
    UIView.animateKeyframesWithDuration(0.5, delay: 0, options: UIViewKeyframeAnimationOptions.BeginFromCurrentState, animations: { () -> Void in
        
        self.rockup.frame.origin.y -= 80
        self.rockdown.frame.origin.y += 80
        
        }, completion: nil)
    /// 设置音效
    let path1 = NSBundle.mainBundle().pathForResource("rock", ofType:"mp3")
    let data1 = NSData(contentsOfFile: path1!)
    self.player = try? AVAudioPlayer(data: data1!)
    self.player?.delegate = self
    self.player?.updateMeters()//更新数据
    self.player?.prepareToPlay()//准备数据
    self.player?.play()
    
    //结束动画
    UIView.animateKeyframesWithDuration(0.5, delay: 1.0, options: UIViewKeyframeAnimationOptions.BeginFromCurrentState, animations: { () -> Void in
        
        self.rockup.frame.origin.y += 80
        self.rockdown.frame.origin.y -= 80
        
        }, completion: nil)

}

实现取消方法

   /**
 取消摇动
 */
override func motionCancelled(motion: UIEventSubtype, withEvent event: UIEvent?) {
    
    print("取消摇动")
    SVProgressHUD.showErrorWithStatus("还不够用力哦 请使劲的摇我吧", maskType: SVProgressHUDMaskType.Black)
}

实现结束方法,然后可以在此处实现想要摇一摇实现的功能

 /**
 摇动结束
 
 */
override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent?) {
    
    print("摇动结束")
///此处设置摇一摇需要实现的功能
    let nav = UINavigationController(rootViewController: WDLoadNearByTableViewController())
    presentViewController(nav, animated: true, completion: nil)
    
    /// 设置音效
    let path = NSBundle.mainBundle().pathForResource("rock_end", ofType:"mp3")
    let data = NSData(contentsOfFile: path!)
    self.player = try? AVAudioPlayer(data: data!)
    self.player?.delegate = self
    self.player?.updateMeters()//更新数据
    self.player?.prepareToPlay()//准备数据
    self.player?.play()
}

到此为止一个完整的摇一摇功能就实现了

相关文章

  • Swift实现模仿微信摇一摇功能

    先附上demo地址https://github.com/w11p3333/shakeDemo/tree/maste...

  • iOS摇一摇功能实现

    看到微信的摇一摇功能是不是感觉很神奇呢?其实在iOS里想要实现摇一摇功能很简单,方法如下: 先在targets -...

  • 微信摇奖盒为什么能有效提高商家的营销效果

    理解微信摇奖盒概念的前提 很多人用过微信的“摇一摇”功能,微信的这个“摇一摇”,可谓是神通广大。其中,“摇人”功能...

  • Android 微信摇一摇功能实现

    开发之前 今天学习了传感器, 脑子里就蹦出了微信的摇一摇, 于是鼓了鼓勇气写了写.菜鸟一枚, 还望大神们多多指点 ...

  • 解密iBeacon物联网和火到爆的摇一摇

    春晚的微信摇一摇抢红包,让摇一摇功能又火了一把。如今微信开放的摇一摇周边接口可能在未来的很多年会一直融入到我们的日...

  • 小细节大体验-微信摇一摇

    微信摇一摇-性别为女时 微信摇一摇-性别为男时

  • 朋友不在朋友圈

    微信,是一个伟大的发明。 记得从2013年开始玩微信,那时候的微信只是好奇里边的摇一摇和漂流瓶功能。那时候摇一摇能...

  • 你摇或者不摇,他就在那里

    微信有个“摇一摇”的功能,还有一个“附近的人”的功能,不用我说大家都知道是干嘛的。我发现那些喜欢用“摇一摇”的人大...

  • boy(4)

    后来我们用上了微信 那时候不是很火什么摇一摇啊什么功能吗 他就让我开微信和他一起摇一摇 看看能不能同时摇到对方 我...

  • 类似微信摇一摇的功能实现方法

    类似微信的摇一摇功能在IOS中的实现是很简单的,下面特酷吧根据自己实践过的代码简单的做些记录。 主要的使用接口是[...

网友评论

    本文标题:Swift实现模仿微信摇一摇功能

    本文链接:https://www.haomeiwen.com/subject/ugmqlttx.html