指南针

#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

{

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容