我想创建一个功能与当前 iphone 完全相同的指南针应用程序!有人可以指点我的方向吗?我是新手!
问问题
163 次
1 回答
3
如何在 iOS 中创建指南针:
第 1 步:创建一个项目(例如 CompassExample)并包含框架
#import <CoreLocation/CoreLocation.h>
#import <QuartzCore/QuartzCore.h>
ViewContoller.h 步骤:
第 2 步:在 .h 文件中,创建位置管理器对象
CLLocationManager *locationManager;
<CLLocationManagerDelegate>
@property (nonatomic,retain) CLLocationManager *locationManager;
@synthesize locationManager;
IBOutlet UIImageView *compassImage;
第 3 步:下载此指南针图像
ViewController.m 步骤:
第 4 步:在 .m 文件的 viewDidLoad 函数中,初始化位置管理器。
locationManager=[[CLLocationManager alloc] init];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.headingFilter = 1;
locationManager.delegate=self;
[locationManager startUpdatingHeading];
步骤 5:在 .m 文件中,实现委托功能。
首先,您需要将度数(例如 360)转换为弧度(例如 3.14=2PI)。其次,乘以 -1 以旋转与扭转手机相反的方向。第三,应用带有核心动画功能的旋转。在此示例中,我从当前值轮换到新值。如下所示,持续时间为 0.5 秒。
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading{
// Convert Degree to Radian and move the needle
float oldRad = -manager.heading.trueHeading * M_PI / 180.0f;
float newRad = -newHeading.trueHeading * M_PI / 180.0f;
CABasicAnimation *theAnimation;
theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.rotation"];
theAnimation.fromValue = [NSNumber numberWithFloat:oldRad];
theAnimation.toValue=[NSNumber numberWithFloat:newRad];
theAnimation.duration = 0.5f;
[compassImage.layer addAnimation:theAnimation forKey:@"animateMyRotation"];
compassImage.transform = CGAffineTransformMakeRotation(newRad);
NSLog(@"%f (%f) => %f (%f)", manager.heading.trueHeading, oldRad, newHeading.trueHeading, newRad);
}
而已!当然,您必须在设备上部署应用程序才能检查方向。
此代码归功于 kiichi,您可以在Github 链接上下载该项目
于 2013-01-06T02:39:45.583 回答