作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 iOS 开发新手。
我按照 Ray Wenderlich 的教程进行操作创建一个基于位置的小型 AR 应用程序。但是,本教程使用 AR Toolkit已经有一段时间没有更新了。它使用的 UIAccelerometer 自 iOS 5 以来已被弃用,因此当我尝试在 iPhone(iOS 7.0.4)上运行它时,Xcode 表示有 3 个警告,并且所有警告都是由 UIAccelerometer 引起的。
它导致的结果是所有标记都停留在屏幕中央,一层一层地放置,并且倾斜根本不起作用。
根据我的研究,我想我需要做的是使用 CMMotionManager 而不是 UIAccelerometer,但正如我之前所说,我对 iOS 开发完全陌生,不知道如何替换它。
这是source code 。我添加了一些小函数,以便您可以手动添加 Google 数据库中没有的位置,但我不认为是这些函数导致了问题。
感谢您提前提供帮助!
最佳答案
我正在学习一些与 UIAccelerometer 相关的花絮
即
[self setAccelometerManager [UIAccelerometer sharedAccelerometer]];
可能成为
[self.motionManager = [[CMMotionManager alloc] init];
设置手动更新间隔,例如
[[self accelerometerManager] setUpdateInterval: 0.25];
你可以拥有
self.motionManager.accelerometerUpdateInterval = 0.25;
并释放委托(delegate)
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];
}];
}
关于ios - 如何用 CMMotionManager 替换 UIAccelerometer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20340384/
我是一名优秀的程序员,十分优秀!