是否有逻辑来检测用户是否将手机从电池侧翻转到屏幕侧,反之亦然?我尝试获取原始值以确定设备是否在两个面上都处于水平位置,但是如何检测整个运动,有人可以指出我正确的方向。
问问题
969 次
1 回答
4
如果您查看UIDevice 类参考,您将看到方向枚举。它的两个值是UIDeviceOrientationFaceDown
和UIDeviceOrientationFaceUp
。话虽如此,您所要做的就是注册UIDeviceOrientationDidChangeNotification
通知的观察者,并在调用时检查设备的当前方向并相应地进行处理。
[[NSNotificationCenter defaultCenter] addObserverForName:UIDeviceOrientationDidChangeNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation == UIDeviceOrientationFaceDown) {
// device facing down
}else if (orientation == UIDeviceOrientationFaceUp) {
// device facing up
}else{
// facing some other direction
}
}];
请务必使用以下内容开始生成您需要观察的设备通知。
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
如果您想获取有关设备方向的更具体信息,则需要使用 Core Motion 框架直接获取陀螺仪数据。有了这个,您可以跟踪设备在 3D 空间中所面对的确切当前方向。
_motionManager = [CMMotionManager new];
NSOperationQueue *queue = [NSOperationQueue new];
[_motionManager setGyroUpdateInterval:1.0/20.0];
[_motionManager startGyroUpdatesToQueue:queue withHandler:^(CMGyroData *gyroData, NSError *error) {
NSLog(@"%@",gyroData);
}];
于 2013-08-29T17:30:24.407 回答