• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

swift 3.0 代码实现摇一摇(防微信)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

             iOS 系统中自带了摇一摇监测功能,这里我们只需要使用即可,当让业界也有其他方式来实现摇一摇的方法,比如监听手机晃动幅度来完成。

 

 

 

 var player: AVAudioPlayer?

 

    override func viewDidLoad() {

        super.viewDidLoad()

        self.setUI()

 

        /**

         开启摇动感应

         */

        UIApplication.shared.applicationSupportsShakeToEdit = true

        becomeFirstResponder()

        // Do any additional setup after loading the view.

    }

 

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

 

 

    /**

     开始摇动

     */

    override func motionBegan(_ motion: UIEventSubtype, with event: UIEvent?) {

 

        print("开始摇动")

 

        //开始动画

        UIView.animateKeyframes(withDuration: 0.5, delay: 0, options: UIViewKeyframeAnimationOptions.beginFromCurrentState, animations: { () -> Void in

 

            self.rockupImage.frame.origin.y -= 80

            self.rockdownImage.frame.origin.y += 80

 

        }, completion: nil)

        /// 设置音效

        let path1 = Bundle.main.path(forResource: "rock", ofType:"mp3")

        let data1 = try? Data(contentsOf: URL(fileURLWithPath: path1!))

        self.player = try? AVAudioPlayer(data: data1!)

        self.player?.delegate = self

        self.player?.updateMeters()//更新数据

        self.player?.prepareToPlay()//准备数据

        self.player?.play()

 

        //结束动画

        UIView.animateKeyframes(withDuration: 0.5, delay: 1.0, options: UIViewKeyframeAnimationOptions.beginFromCurrentState, animations: { () -> Void in

 

            self.rockupImage.frame.origin.y += 80

            self.rockdownImage.frame.origin.y -= 80

 

        }, completion: nil)

 

    }

 

    /**

     取消摇动

     */

    override func motionCancelled(_ motion: UIEventSubtype, with event: UIEvent?) {

 

        print("取消摇动")

 

    }

 

 

    /**

     摇动结束

 

     */

    override func motionEnded(_ motion: UIEventSubtype, with event: UIEvent?) {

 

        print("摇动结束")

        ///此处设置摇一摇需要实现的功能

 

 

        /// 设置音效

        let path = Bundle.main.path(forResource: "rock_end", ofType:"mp3")

        let data = try? Data(contentsOf: URL(fileURLWithPath: path!))

        self.player = try? AVAudioPlayer(data: data!)

        self.player?.delegate = self

        self.player?.updateMeters()//更新数据

        self.player?.prepareToPlay()//准备数据

        self.player?.play()

    }

 

    func setUI(){

        self.view.backgroundColor = UIColor.colorWithHex(hexColor: 0xf2f2f2)

       

        self.view.addSubview(self.rockupImage)

        self.view.addSubview(self.rockdownImage)

 

       

         self.rockupImage.snp.makeConstraints { (make) in

            make.width.equalTo(100)

            make.height.equalTo(50)

            make.centerX.equalTo(self.view.snp.centerX)

            make.bottom.equalTo(self.view.snp.centerY)

        }

        self.rockupImage.contentMode = .scaleAspectFit

        self.rockupImage.image =  UIImage.init(named: "rock_up-1.png")

        self.rockdownImage.snp.makeConstraints { (make) in

            make.width.equalTo(100)

            make.height.equalTo(50)

            make.centerX.equalTo(self.view.snp.centerX)

            make.top.equalTo(self.view.snp.centerY)

        }

        self.rockdownImage.contentMode = .scaleAspectFit

        self.rockdownImage.image =  UIImage.init(named: "rock_down-1.png")

 

    }

   

 

    fileprivate var rockupImage: UIImageView = {

        let view = UIImageView()

        return view

    }()

    fileprivate var rockdownImage: UIImageView = {

        let view = UIImageView()

        return view

    }()

    fileprivate lazy var width = UIScreen.main.bounds.width

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
SWIFT学习笔记05发布时间:2022-07-13
下一篇:
Android平台的“Swift”—Kotlin介绍发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap