今のiPhoneと全く同じ機能のコンパスアプリを作りたい!誰か方向を教えてくれませんか?私はこれが初めてです!
質問する
163 次
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 に答える