#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
{
}