用于检测设备是否为水平的iOS代码

时间:2014-07-14 19:29:44

标签: ios iphone objective-c ipad swift

我想编写一个应用程序,用于检测此人是否持有iPhone或iPad级别,或者他们是否将设备沿x / y / z轴的某个角度以及它所处的角度倾斜。我见过很多提供类似功能的应用程序,但代码不多。

有人可以指点我在线教程,还是提供演示这些功能的代码?

2 个答案:

答案 0 :(得分:3)

Coremotion是相关框架。 motiongraphs是一款出色的示例应用,可实时显示CoreMotion数据。

答案 1 :(得分:0)

正如@timothykc所说,MotionGraphs示例是使用CoreMotion库的一个很好的例子。

https://developer.apple.com/library/ios/samplecode/MotionGraphs/Introduction/Intro.html

另一个很好的例子:

http://www.captechconsulting.com/blog/john-morrison/ios-getting-started-accelerometer-data

以下是重点:

1)使用单例模式访问CMMotionManager(此片段直接来自示例项目)。

@interface AppDelegate ()
{
    CMMotionManager *motionmanager;
}
@end

@implementation AppDelegate
- (CMMotionManager *)sharedManager
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        motionmanager = [[CMMotionManager alloc] init];
    });
    return motionmanager;
}
@end

2)使用此代码注册俯仰/翻滚/偏航的更新:

CMMotionManager *mManager = [(AppDelegate *)[[UIApplication sharedApplication] delegate] sharedManager];

APLDeviceMotionGraphViewController * __weak weakSelf = self;

if ([mManager isDeviceMotionAvailable] == YES) {
    [mManager setDeviceMotionUpdateInterval:0.1];
    [mManager startDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMDeviceMotion *deviceMotion, NSError *error)
    {
        //Access the pitch, roll, and yaw from the attitude and do something with them.
        //deviceMotion.attitude.yaw
        //deviceMotion.attitude.roll
        //deviceMotion.attitude.pitch
    }];
}