指南针

#import "RootViewController.h"#import@interface RootViewController ()@property (nonatomic,strong)CLLocationManager *mgr;

@property (nonatomic,strong)UIImageView *imageView;

@end

@implementation RootViewController

- (void)viewDidLoad {

[super viewDidLoad];

// 添加指南针图片

self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg_compasspointer"]];

self.imageView.center = CGPointMake(self.view.center.x, self.view.center.y);

[self.view addSubview:_imageView];

self.mgr.delegate = self;

//    判断是否是 iOS8

//    if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) {

//        NSLog(@"是 iOS8");

//        // 主动要求用户对我们的程序授权 授权状态改变就会通知代理

//        [self.mgr requestAlwaysAuthorization]; // 请求前台和后台定位权限(必须是 iOS8 才能用)

//        //        [self.mgr requestWhenInUseAuthorization]; // 请求前台定位权限

//    }else {

//        NSLog(@"是 iOS7");

//    }

// 开始获取用户位置

// 注意:获取用户的方向信息是不需要用户授权的

[self.mgr startUpdatingHeading];

// Do any additional setup after loading the view.

}

// 当获取到用户的方向时就会调用

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading

{

//    NSLog(@"%s",__func__);

/*

magneticHeading 设备与磁北的相对角度

trueHeading 设置与真北的相对角度, 必须和定位一起使用, iOS需要设置的位置来计算真北

真北始终指向地理北极点

磁北对应随着时间变化的地球磁场北极

*/

//    NSLog(@"%f",newHeading.magneticHeading);

// 将获取到的角度转为弧度 = (角度 * pi)/ 180

CGFloat angle = newHeading.magneticHeading * M_PI / 180;

// 旋转图片

/*

顺时针 正

逆时针 负

*/

self.imageView.transform = CGAffineTransformIdentity;

self.imageView.transform = CGAffineTransformMakeRotation(-angle);

}

#pragma mark - 懒加载

- (CLLocationManager *)mgr

{

if (!_mgr) {

_mgr = [[CLLocationManager alloc] init];

}

return _mgr;

}

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations

{

}

你可能感兴趣的:(指南针)