您的位置:首页 > 移动开发 > Swift

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范围支持支持
标题服务支持支持
地理编码服务支持支持
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。多谢~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios swift ios开发