指南针图片 IBOutlet UIImageView *compassView |
1 #import "ViewController.h" 2 #import <CoreLocation/CoreLocation.h> 3 4 #define isIOS(version) ([[UIDevice currentDevice].systemVersion floatValue] >= version) 5 /** 6 先决条件:真机测试,模拟器上没有磁力计 传感器 7 8 **/ 9 @interface ViewController ()<CLLocationManagerDelegate> 10 11 /** 位置管理者*/ 12 @property (nonatomic, strong) CLLocationManager *locM; 13 /**指南针图片**/ 14 @property (weak, nonatomic) IBOutlet UIImageView *compassView; 15 16 @end 17 18 @implementation ViewController 19 20 #pragma mark - 懒加载 21 /** locM属性的懒加载 */ 22 -(CLLocationManager *)locM 23 { 24 if (!_locM) { 25 // 1. 创建位置管理者 26 _locM = [[CLLocationManager alloc] init]; 27 // 1.1 block , 代理, 通知 28 _locM.delegate = self; 29 30 } 31 return _locM; 32 } 33 34 35 -(void)viewDidLoad 36 { 37 38 // 获取设备方向 39 // ("磁力计", 判断设备是否支持传感器) 40 41 if([CLLocationManager headingAvailable]) 42 { 43 [self.locM startUpdatingHeading]; 44 }else 45 { 46 NSLog(@"dang前不支持"); 47 } 48 49 50 51 } 52 53 54 55 #pragma mark - CLLocationManagerDelegate 56 57 /** 58 * 方向发生改变时调用 59 * 60 * @param manager 位置管理者 61 * @param newHeading 方向信息 62 */ 63 -(void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading 64 { 65 NSLog(@"%@", newHeading); 66 67 /** 68 * CLHeading 69 magneticHeading : 磁北角度 70 trueHeading : 真北角度 71 */ 72 73 if(newHeading.headingAccuracy < 0) 74 { 75 return; 76 } 77 78 // 获取磁北方向(角度) 79 CGFloat angle = newHeading.magneticHeading; 80 81 // 角度--> 弧度 82 CGFloat hudu = angle / 180.0 * M_PI; 83 84 85 [UIView animateWithDuration:1 animations:^{ 86 // 反向旋转图片(弧度) 87 self.compassView.transform = CGAffineTransformMakeRotation(-hudu); 88 }]; 89 90 91 92 93 } 94 95 96 97 @end
时间: 2024-11-10 15:51:30