ios提供了3个传感器,它们沿设备的垂直坐标测量加速度,即左/右(X),上/下(Y)和前/后(Z)。这些值表示影响设备的力,即同时来自重力和用户移动的受力。
相关代码:
#import <UIKit/UIKit.h> @interface ViewController : UIViewController<UIAccelerometerDelegate> @property (strong, nonatomic) IBOutlet UIImageView *imgView; @end
// // ViewController.m // DeviceTest // 加速度 // Created by Dwen on 12-11-19. // Copyright (c) 2012年 __MyCompanyName__. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController @synthesize imgView; - (void)viewDidLoad { [super viewDidLoad]; imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow.png"]]; imgView.frame = CGRectMake(300, 300, 200, 100); [self.view addSubview:imgView]; //获取设备信息 NSLog(@"%@",[[UIDevice currentDevice] systemName]); NSLog(@"%@",[[UIDevice currentDevice] systemVersion]); NSLog(@"%@",[[UIDevice currentDevice] model]); //设置代理 [[UIAccelerometer sharedAccelerometer] setDelegate:self]; } - (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{ float xx = -[acceleration x]; float yy = [acceleration y]; float zz = [acceleration z]; float angle = atan2(yy, xx); NSLog(@"xx: %g, yy: %g, zz: %g",xx,yy,zz); [imgView setTransform:CGAffineTransformMakeRotation(angle)]; } - (void)viewDidUnload { [self setImgView:nil]; [super viewDidUnload]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; } @end