-4

今のiPhoneと全く同じ機能のコンパスアプリを作りたい!誰か方向を教えてくれませんか?私はこれが初めてです!

4

1 に答える 1

3

iOSでコンパスを作成する方法:

ステップ1:プロジェクト(例:CompassExample)を作成し、フレームワークを含める

#import <CoreLocation/CoreLocation.h>
#import <QuartzCore/QuartzCore.h>

ViewContoller.h手順:

ステップ2:.hファイルで、LocationManagerオブジェクトを作成します

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 に答える