昨天写了重力感应的例子,我觉得这个例子比较有用处,我分享出来:
1 )显然ios4 之后可以使用coreMotion的framework 为了向下兼容加上UIAccelerator,
#import <Foundation/Foundation.h>
#import <CoreMotion/CoreMotion.h>
@protocol IFAccelerometerDelegate<NSObject>
- (void)accelerateWithX:(NSNumber*)x withY:(NSNumber*)y withZ:(NSNumber*)z withTimeInterval:(NSTimeInterval)timeInterval;
@end
@interface IFAccelerometer : NSObject<UIAccelerometerDelegate>
{
UIAccelerometer *_accelerometer;
CMMotionManager *_motionManager;
id<IFAccelerometerDelegate> _delegate;
}
+ (id)shareAccelerometer;
- (void)addOberser:(id)oberserer;
- (void)removeObserver;
@end
CMMotionManager 将是我们使用的Object,可以用来监测重力!
同时,咱们不能在需要监测重力感应的地方直接使用这个类,这样耦合比较严重,也不利于重用。所以抽离出来,在代码中您可以看到,我将定义一个signleton,同时将重力变化的事件回调给其代理。
2.接着往下是定义其函数,这个很简单,直接贴代码。
#import "IFAccelerometer.h"
static IFAccelerometer *accelerometerInstance = nil;
@implementation IFAccelerometer
+ (id)shareAccelerometer
{
if (!accelerometerInstance) {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{