北京iOS开发教程-CoreMotion框架CoreMotion是一个专门处理Motion的框架,其中包含了两个部分加速计和陀螺仪,elerometer类来负责采集数据,现在一般都是用CoreMotion来处理加速度过程,elerometer比较简单,同样有人在使用。加速计由三个坐标轴决定,用户最常见的操作设备的动作移动,晃动手机(摇一摇),倾斜手机都可以被设备检测到,加速计可以检测到线性的变化,陀螺仪可以更好的检测到偏转的动作,可以根据用户的动作做出相应的动作,iOS模拟器无法模拟以上动作,真机调试需要开发者账号。加速计通过感知特定方向的惯性力总量,加速计可以测量出加速度和重力。iOS设备内的加速计是一个三轴加速计,也就是说它能够检测到三维空间中的运动或重量。因此,加速计不但可以指示用户握持设备的方式(如自动旋转功能),而且还可以在设备被放在桌子上时指示其正面朝上还是朝下。如图所示展示了加速计所使用的是三轴结构,需要注意的是,加速计对y坐标使用了更标准的惯例,即y轴伸长表示向上的力。如果加速计将Quartz2D作为控制机制,那么必须要转换y坐标轴。使用OpenGLES时(使用加速计控制动画时通常会用到),则不需要转换。如果只需要知道设备的方向,不需要知道具体方向矢量角度,那么可以使用UIDevice进行操作,还可以根据方向就行判断,具体可以参考一下苹果官网代码:-(void)viewDidLoad{//elerometerevents[[UIDevicecurrentDevice]beginGeneratingDeviceOrientationNotifications];[[NSNotificationCenterdefaultCenter]addObserver:selfselector:***@selector(orientationChanged:)name:UIDeviceOrientationDidChangeNotificationobject:nil];}-(void)orientationChanged:(NSNotification*)notification{//Respondtochangesindeviceorientation}-(void)viewDidDisappear{//elerometer[[NSNotificationCenterdefaultCenter]removeObserver:self];[[UIDevicecurrentDevice]endGeneratingDeviceOrientationNotifications];} 当用户晃动设备的时候,系统会通知每一个在用的设备,可以使本身成为第一响应者:-(BOOL)eFirstResponder{returnYES;}-(void)viewDidAppear:(BOOL)animated{[eFirstResponder];}处理Motion事件有三种方式,开始(motionBegan),结束(motionEnded),取消(motionCancelled):-(void)motionBegan:(UIEventSubtype)motionwithEvent:(UIEvent*)eventNS_AVAILABLE_IOS(3_0);-(void)moti
北京iOS开发教程-CoreMotion框架 来自淘豆网m.daumloan.com转载请标明出处.