-4

我想创建一个功能与当前 iphone 完全相同的指南针应用程序!有人可以指点我的方向吗?我是新手!

4

1 回答 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 回答