50天iOS挑战(Swift) - 第3天:简单利用CoreLocation获取当前地址
2017-10-22 23:18
537 查看
50天iOS挑战(Swift) - 第3天:简单利用CoreLocation获取当前地址
50天,每天一个Swift语言的iOS练手项目,覆盖iOS开发的主要知识。贵在坚持,重在思考文章列表:http://blog.csdn.net/b735098742/article/category/6978601
Github项目:https://github.com/Minecodecraft/50DaysOfSwift
简介
做一个利用CoreLocation获取当前地址的小demo,任务量较小,放松一下主要知识点: CoreLocation
过程
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范围 | 支持 | 支持 |
标题服务 | 支持 | 支持 |
地理编码服务 | 支持 | 支持 |
首先添加上述两个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。多谢~
相关文章推荐
- ios 利用自带的CoreLocation.framework 实现获取手机当前处于的精度和纬度 并计算两点之间的间距(特别使用于团购,附近商户之类的项目)
- iOS定位-利用CoreLocation.framework获取当前城市
- iOS利用CoreLocation获取地理位置以及如何在模拟器进行调试
- iOS利用CoreLocation获取地理位置以及如何在模拟器进行调试
- iOS - 使用CoreLocation获取当前所在城市
- iOS利用CoreLocation获取地理位置以及如何在模拟器进行调试
- iOS利用CoreLocation获取地理位置以及如何在模拟器进行调试
- iPhone获取当前位置(CoreLocation的一些简单使用)
- Android中LocationManager的简单使用,获取当前位置[转
- 50天iOS挑战(Swift) - 第2天:手势操控弹性按钮
- iOS_经纬度定位及反编码获取当前地址
- iOS中利用CoreTelephony获取用户当前网络状态(判断2G,3G,4G)
- iOS定位获取当前所在经纬度,进而获得具体地址(省市地区街道)
- 50天iOS挑战(Swift) - 第1天:秒表计时器
- iOS 获取当前响应链的First Responder (Swift)
- iOS. 原生获取当前经度 纬度。 地址
- 获取 iOS 设备当前 ip 地址
- [iOS 利用MapKit和CoreLocation框架打造精简的定位和导航]
- iOS--CoreLocation的简单使用
- iOS—使用CoreLocation框架获取定位信息