zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    ReactNative 适合初学的第一个教程demo,找租房
    ReactNative 从环境和第一个demo说起,填坑教程
    WKWebView与JS交互,UIWebView+JavascriptCore和JS交互
    JS中匿名函数$(function(){ })和(function(){})()的区别
    对前端的一个H5项目的所思所想
    使用Swift打造动态库SDK和DemoAPP时所遇到的(Xcode7.3)
    Git 分支合并代码
    Flutter中fluro使用
    flutter_redux框架的使用
    解决React-native init 初始化时 info Installing required CocoaPods dependencies
  • 原文地址:https://www.cnblogs.com/luolianxi/p/4990297.html
Copyright © 2011-2022 走看看