博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
检测设备朝向和移动
阅读量:6814 次
发布时间:2019-06-26

本文共 3221 字,大约阅读时间需要 10 分钟。

1、加速计和陀螺仪

导入CoreMotion.framework框架。

@IBOutlet var xLabel:UILabel!    @IBOutlet var yLabel:UILabel!    @IBOutlet var zLabel:UILabel!        @IBOutlet var orientationLabel:UILabel!        //加速计管理者-所有的操作都会由这个motionManager接管    var motionManager:CMMotionManager!
//------ CoreMotion 加速计        motionManager = CMMotionManager()//注意CMMotionManager不是单例        motionManager.accelerometerUpdateInterval = 0.1//设置读取时间间隔                if motionManager.accelerometerAvailable//判断是否可以使用加速度计        {            //获取主线程并发队列,在主线程里跟新UI            motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: { (let accelerometerData:CMAccelerometerData?, let error:NSError?) -> Void in                                if error != nil                {                    self.motionManager.stopAccelerometerUpdates()//停止使用加速度计                }else                {                                    self.xLabel.text = "x:\(accelerometerData!.acceleration.x)"                    self.yLabel.text = "Y:\(accelerometerData!.acceleration.y)"                    self.zLabel.text = "Z:\(accelerometerData!.acceleration.z)"                }            })                                }else        {            let aler = UIAlertView(title: "您的设备不支持加速计", message: nil, delegate: nil, cancelButtonTitle: "OK")            aler.show()        }

2、判断设备方向

//感知设备方向-开启监听设备方向        UIDevice.currentDevice().beginGeneratingDeviceOrientationNotifications()                //添加通知,监听设备方向改变        NSNotificationCenter.defaultCenter().addObserver(self, selector: "receivedRotation", name: UIDeviceOrientationDidChangeNotification, object: nil)                //关闭监听设备方向        UIDevice.currentDevice().endGeneratingDeviceOrientationNotifications()
// MARK: - 判断设备方向代理方法    func receivedRotation()    {        let device = UIDevice.currentDevice()                if device.orientation == UIDeviceOrientation.Unknown        {            orientationLabel.text = "Unknown"        }        else if device.orientation == UIDeviceOrientation.Portrait        {            orientationLabel.text = "Portrait"        }        else if device.orientation == UIDeviceOrientation.PortraitUpsideDown        {             orientationLabel.text = "PortraitUpsideDown"        }        else if device.orientation == UIDeviceOrientation.LandscapeLeft        {             orientationLabel.text = "LandscapeLeft"        }        else if device.orientation == UIDeviceOrientation.LandscapeRight        {             orientationLabel.text = "LandscapeRight"        }else if device.orientation == UIDeviceOrientation.FaceUp        {             orientationLabel.text = "FaceUp"        }        else  if device.orientation == UIDeviceOrientation.FaceDown        {             orientationLabel.text = "FaceDown"        }    }

3、摇晃事件

// MARK: - 摇晃事件    override func motionBegan(motion: UIEventSubtype, withEvent event: UIEvent?)    {                print("motionBegan")//开始摇晃    }        override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent?)    {        print("motionEnded")//摇晃结束    }            override func motionCancelled(motion: UIEventSubtype, withEvent event: UIEvent?)    {        print("motionCancelled")//摇晃被意外终止    }

 

转载地址:http://eudzl.baihongyu.com/

你可能感兴趣的文章
Handler
查看>>
移动端APP meta标签
查看>>
使用webpack 进行ES6开发
查看>>
VS 断点不会命中的情况
查看>>
通用类 Js 显示消息提示对话框,不输出页面内容,并返回上一页
查看>>
格式化字符串
查看>>
Oracle通过SQL语句查看table所引用的对象(View/Function/Procedure/Trigger)
查看>>
jenkins权限配置不对导致jenkins无法登陆
查看>>
java 向上转型与向下转型
查看>>
4.11搭建网站的两个小问题
查看>>
Java知多少(44)异常类型
查看>>
什么是Servlet?它有哪些特点
查看>>
BZOJ 1497 [NOI2006]最大获利
查看>>
深入浅出KNN算法(二) sklearn KNN实践
查看>>
github上face_recognition工程项目实践
查看>>
Bzoj3992:[SDOI2015]序列统计
查看>>
ZJOI2018外省选手酱油记Day1
查看>>
如何用OpenCV自带的adaboost程序训练并检测目标
查看>>
SSM-MyBatis-08:Mybatis中SqlSession的commit方法为什么会造成事物的提交
查看>>
C++ 生成随机数
查看>>