UIApplication
之前我们使用了应用委托,比如应用启动时调用的方法、回调URL时调用的方法等等,这些都是应用委托,但是应用委托实际上是由一个对象上的属性所设置,这就是UIApplication
。
在整个应用中,UIApplication
只有一个实例:
|
|
这里并没有很多东西,实际上有用的东西都在委托中AppDelegate
中。
网络指示器
网络指示器其实是UIApplication
中的一个特定的属性,他是一个布尔类型:
|
|
如果这个标识设置成YES,状态栏上就会有一个小菊花在转动,表示网络正在使用。
这个指示器的使用有一点麻烦,因为他仅仅是一个布尔类型,而且是存在于整个应用的,所以当你进行一个10秒的网络活动时,你把它设置为YES,而在第5秒的时候又开启了一个2秒的网络活动,这个时候同样把他设置成YES,但是当2秒的活动结束的时候,我们会把他设置成NO,那么问题来了,这个时候10秒的网络还没有结束。所以为了处理它我们需要做很多麻烦的判断。
完成之前的Demo
这个部分主要是将应用适配到iPad,这里就不详细介绍了。
Core Location
Core Location属于MapKit框架中,主要用于提供当前手机在地球上的位置。
CLLocation
CLLocation是基本对象,包含经纬度、高度等信息。
这里可以看到有一个C的结构体用来存放经纬度的信息:
|
|
其中经纬度的值实际上是double
型的数字。
还有高度信息:
|
|
高度信息是以米
来计算的单位。
精度
当我们获取位置时,我们可以设置获取的精度,如果是由GPS获取的定位,那么定位就一定是非常准确的,如果是由电话信号塔来获取的位置,可能就非常不准确。当然,精度越高,耗电量也就越大。
精度分为以下几种:
|
|
CLLocationManager
CLLocationManager 可以用来实例化并使用获取定位的信息,那么具体操作的步骤是什么呢?
- 首先,我们要检查我们手中的设备是否支持定位,而且不同的手机型号可能获取定位的方式也不同。
- 接下来,我们要设定委托,并在想要获取数据的类中实现相关的代码。
- 再来我们需要设置一些属性比如精度等等。
- 最后,我们就可以开始监控设备的位置了。
我们可以通过设置一些属性,让手机在更新距离达到一定范围之后再通知我们进行处理,这样做可是尽可能的节约电量的使用。
|
|
并可以通过这些方法更新或停止更新位置信息,同时也可以汇报错误。
|
|
当地区发生重大变化时
当用户的位置发生重大的变化时,我们可以通过这两个方法获取。
|
|
无论APP处于什么状态下,我们都可以获取到这些信息:
|
|
当用户进入某个区域时
我们也可以设定一个范围,当用户进入这个范围时,就会触发方法:
|
|
或者通过信标来监控
|
|
这节课的内容还没有结束,更多重要的MapKit相关课程都留到了下节课中,那就让我们下节课见吧!