试试这个链接:https://www.inkling.com/read/learning-ios-programming-alasdair-allan-2nd/chapter-9/the-core-motion-framework
我正在学习一些可以用 UIAccelerometer 翻译一些内容的花絮
即
[self setAccelometerManager [UIAccelerometer sharedAccelerometer]];
可能变成
[self.motionManager = [[CMMotionManager alloc] init];
设置手动更新间隔,如
[[self accelerometerManager] setUpdateInterval: 0.25];
你可以拥有
self.motionManager.accelerometerUpdateInterval = 0.25;
并释放委托
self.accelerometerManager.delegate = nil;
现在是
[self.motionManager stopDeviceMotionUpdates];
同样来自链接,我最终做了这样的事情:
motionManager = [[CMMotionManager alloc] init];
motionManager.accelerometerUpdateInterval = 1.0/10.0; // Update at 10Hz
if (motionManager.accelerometerAvailable) {
queue = [NSOperationQueue currentQueue];
[motionManager startAccelerometerUpdatesToQueue:queue withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
switch (currentOrientation) {
case UIDeviceOrientationLandscapeLeft:
viewAngle = atan2(accelerometerData.acceleration.x, accelerometerData.acceleration.z);
break;
case UIDeviceOrientationLandscapeRight:
viewAngle = atan2(-accelerometerData.acceleration.x, accelerometerData.acceleration.z);
break;
case UIDeviceOrientationPortrait:
viewAngle = atan2(accelerometerData.acceleration.y, accelerometerData.acceleration.z);
break;
case UIDeviceOrientationPortraitUpsideDown:
viewAngle = atan2(-accelerometerData.acceleration.y, accelerometerData.acceleration.z);
break;
default:
break;
}
[self updateCenterCoordinate];
}];
}