iOS8 SDK中部份更新

更新一:UIWindow中设备朝向和坐标的处理方式发生变化

iOS8以前,UIWindow中的坐标计算以设备Potraite朝向计算,即便将设备横置为Landscape朝向,坐标的计算方式依然不变。
因此,在设计自定义的转场(Segue)的时候,需要根据设备朝向重新调整坐标计算。而UIView的坐标会根据设备朝向自动调整。
iOS8以后,UIWindow与UIView保持一致,不再需要单独进行处理,但这个变化会与以前的逻辑冲突。

更新二:UIPopoverController的地位发生变化

UIPopoverController提供气泡式弹出框视图,在iPad上有很不错的体验。
在iOS8中,苹果调整了- presentPopoverFromRect:inView:permittedArrowDirections:animated:方法的逻辑。
因此,在自定义Segue的情况下,使用这个方法,可能会出现view not in windows hierachy错误,使得原本可以弹出的视图无法弹出。

更新三:Core Location定位服务授权流程有变化

在iOS8以前,没有单独的授权接口可以调用,当第一次调用到locationManager中的坐标获取方法时,会弹出一个系统对话框提示用户是否授权。
iOS8以后,不再有自动提示。开发者需要首先调用CLLocationManager的类方法- authorizationStatus来判断授权状态,
进而手动调用其实例方法- requestAlwaysAuthorization或者- requestWhenInUseAuthorization来手动提示用户授权。
这里还必须要在Info.plist里面设置NSLocationUsageDescription或者NSLocationWhenInUseUsageDescription这两个key中的其中一个来设置弹出框的提示信息。
否则无法弹出提示框。之后可以通过locationManager:didChangeAuthorizationStatus:来监测用户授权的情况,分别做处理。

    原文作者:kid143
    原文地址: https://segmentfault.com/a/1190000000696232
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞