50天iOS挑战(Swift) - 第3天:简单利用CoreLocation获取当前地址

本文介绍了一个简单的Swift项目,利用CoreLocation框架实现设备位置获取功能。项目覆盖了CoreLocation的基本用法,包括权限设置、模式支持和服务等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

50天iOS挑战(Swift) - 第3天:简单利用CoreLocation获取当前地址

50天,每天一个Swift语言的iOS练手项目,覆盖iOS开发的主要知识。贵在坚持,重在思考


文章列表:http://blog.youkuaiyun.com/b735098742/article/category/6978601
Github项目:https://github.com/Minecodecraft/50DaysOfSwift


简介

做一个利用CoreLocation获取当前地址的小demo,任务量较小,放松一下
主要知识点: CoreLocation

GIF

过程

1、 CoreLocation简介
CoreLocation是用于定位设备当前位置的框架,该框架可以利用蜂窝基站、WiFi、GPS等多种信息计算用户当前位置,同时该框架也可与包括MapKit在内的众多框架无缝共用,实现强大的基于位置的功能,在应用中使用频繁。
CoreLocation的使用主要CLLocationManager和CLLocationManagerDelegate两个核心类,前者提供定位、区域检测、方向等核心API,后者则处理前者的相关事件代理。

Tips 1. 定位权限的设置
iOS8起,程序获取定位权限需要显示调用requestWhenInUseAuthorization()或requestAlwaysAuthorization(),前者对应应用程序运行时才定位,后者对应始终定位,同时需要在Info.plist中设置"Privacy - Location When In Use Usage Description""Privacy - Location Always and When In Use Usage Description"。如果应用支持iOS 10及更早的系统,还要设置"Privacy - Location Always Usage Description"

Tips 2. 不同模式所支持的服务

服务是否支持是否支持
标准定位服务支持支持
重大变化的位置服务不支持支持
访问服务不支持支持
区域检测不支持支持
iBeacon范围支持支持
标题服务支持支持
地理编码服务支持支持

2、 界面实现
首先添加上述两个view,bkgView为背景,popupView为弹出窗口

        // 添加带透明度的背景视图,从而实现下方视图变暗
        guard let window = UIApplication.shared.keyWindow else { return }
        bkgView = UIView()
        bkgView.frame = window.bounds
        bkgView.backgroundColor = UIColor(white: 0.1, alpha: 0.6)
        window.addSubview(bkgView)

        // 添加弹出控件,添加到window而不是bkgView
        popupView = UIView()
        popupView.frame = CGRect(x: 30, y: kScreenHeight, width: kScreenWidth-60, height: 60)
        popupView.backgroundColor = UIColor.orange
        popupView.layer.cornerRadius = 15
        window.addSubview(popupView)

3、 动画实现
iOS简单动画实现起来很容易,通过UIView提交一个动画即可,采用尾随闭包来写。

        // 添加一个弹出动画
        UIView.animate(withDuration: 0.3) {
            // 尾随闭包播放弹出动画
            self.popupView.frame = CGRect(x: 30, y: (kScreenHeight-60)/2, width: kScreenWidth-60, height: 60)
        }
        // 收回动画
        UIView.animate(withDuration: 0.3) {
            // 尾随闭包播放弹出动画
            self.popupView.frame = CGRect(x: 30, y: kScreenHeight, width: kScreenWidth-60, height: 60)

            // 提交一个延时任务线程
            DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
                self.popupView.removeFromSuperview()
                self.bkgView.removeFromSuperview()
            }
        }

一点小小的补充
1. 项目源码地址 50DaysOfSwift,欢迎前来支持,随手留个Star。多谢~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值