AJ学IOS 之CoreLocation指南针小应用

AJ分享,必须精品

一:效果图示

简单的用到CoreLocation获取方位做的指南针小应用
这里写图片描述

二:制作思路

具体用到了CoreLocation相关的知识,请看上一篇博客有写
然后获取方向不需要进行授权,所以授权可以去掉
简单思路就是一张图片,然后根据CoreLocation来获取到方位同事做出哦动画效果

三:代码

代码很少,下面是全部代码,核心用到的代码就几句,这也是iOS开发的强大之处吧

#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>

@interface ViewController ()<CLLocationManagerDelegate>
/**
 *  定位管理者
 */
@property (nonatomic ,strong) CLLocationManager *mgr;
// 指南针图片
@property (nonatomic, strong) UIImageView *compasspointer;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // 1.添加指南针图片

    UIImageView *iv = [[UIImageView alloc] initWithImage: [UIImage imageNamed:@"bg_compasspointer"]];
    iv.center = CGPointMake(self.view.center.x, self.view.center.y);
    [self.view addSubview:iv];
    self.compasspointer = iv;

    // 2.成为CoreLocation管理者的代理监听获取到的位置
    self.mgr.delegate = self;

    // 3.开始获取用户位置
    // 注意:获取用户的方向信息是不需要用户授权的
    [self.mgr startUpdatingHeading];


}
#pragma mark - CLLocationManagerDelegate
// 当获取到用户方向时就会调用
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
//    NSLog(@"%s", __func__);
    /*
     magneticHeading 设备与磁北的相对角度
     trueHeading 设置与真北的相对角度, 必须和定位一起使用, iOS需要设置的位置来计算真北
     真北始终指向地理北极点
     */
//    NSLog(@"%f", newHeading.magneticHeading);

    // 1.将获取到的角度转为弧度 = (角度 * π) / 180;
    CGFloat angle = newHeading.magneticHeading * M_PI / 180;
    // 2.旋转图片
    /*
     顺时针 正
     逆时针 负数
     */
//    self.compasspointer.transform = CGAffineTransformIdentity;
    self.compasspointer.transform = CGAffineTransformMakeRotation(-angle);




}

#pragma mark - 懒加载
- (CLLocationManager *)mgr
{
    if (!_mgr) {
        _mgr = [[CLLocationManager alloc] init];
    }
    return _mgr;
}

@end
原文地址:https://www.cnblogs.com/luolianxi/p/4990297.html