[iOS]关于如何在项目中同时适配低版本和高版本的API的一点小见解
2015-03-18 10:50
465 查看
iOS系统的版本每年都在不断的更新,而每次的更新必然伴随着,新的API的诞生和旧的API的废弃.
有时,新的版本中,旧的API固然可以实现效果,但是还是会在细节方面有所区别.
我给大家举个例子:
iOS 7中,我们使用 UIActionSheet 由下及上弹出提示框,这个API 在iOS7中固然很好,没有问题,到了iOS8中,他虽然可以可以使用,但是当你在开发中,将手机设置为不可转屏,view是不会旋转,可是这个 UIActionSheet 却可以自行旋转;
这是由于苹果在iOS8中更新了新的API 为 UIAlertAction 和 UIAlertController 的配合使用才不会出现这种情况,而新的API更加的易用,直接在block回调函数中,响应事件.
说了这么多,那么如何在项目中同时适配两种版本呢?让代码既可以在高版本的xcode运行,也可以在旧的xcode运行呢?
首先,需要知道一点是:
系统中有这样的一个宏
#define __IPHONE_8_0 80000
当你使用xcode 5.1打的版本时,无论是装在 iOS7 还是 iOS8的手机上 该API都不会存在的;
相反使用xcode 6.1打的版本时,无论是装在 iOS7 还是 iOS8的手机上 该API都是存在的;
明白了这一点,可以往下继续看(你也可以自己测试一下).
然后再项目中,我们需要先定义一个检测系统版本的宏
这个宏可以保证,获取到系统正确的系统版本;
下面就可以开始coding了,只需要在写不同API的地方加上下面就可以了
这样就可以适配新旧的API了
当然这只是很小的一部分,借此抛砖引玉,希望大家见谅拙笔.
有时,新的版本中,旧的API固然可以实现效果,但是还是会在细节方面有所区别.
我给大家举个例子:
iOS 7中,我们使用 UIActionSheet 由下及上弹出提示框,这个API 在iOS7中固然很好,没有问题,到了iOS8中,他虽然可以可以使用,但是当你在开发中,将手机设置为不可转屏,view是不会旋转,可是这个 UIActionSheet 却可以自行旋转;
这是由于苹果在iOS8中更新了新的API 为 UIAlertAction 和 UIAlertController 的配合使用才不会出现这种情况,而新的API更加的易用,直接在block回调函数中,响应事件.
说了这么多,那么如何在项目中同时适配两种版本呢?让代码既可以在高版本的xcode运行,也可以在旧的xcode运行呢?
首先,需要知道一点是:
系统中有这样的一个宏
#define __IPHONE_8_0 80000
当你使用xcode 5.1打的版本时,无论是装在 iOS7 还是 iOS8的手机上 该API都不会存在的;
相反使用xcode 6.1打的版本时,无论是装在 iOS7 还是 iOS8的手机上 该API都是存在的;
明白了这一点,可以往下继续看(你也可以自己测试一下).
然后再项目中,我们需要先定义一个检测系统版本的宏
#define CurrentSystemVersion ([[[UIDevice currentDevice] systemVersion] floatValue])
这个宏可以保证,获取到系统正确的系统版本;
下面就可以开始coding了,只需要在写不同API的地方加上下面就可以了
if (CurrentSystemVersion < 8.0) { //这里写的是低版本的API coding }else{ #ifdef __IPHONE_8_0 //这里写高版本的新的API //在高版本xcode运行,此部分的代码有颜色 //在低版本xcode运行,此本分代码为白色,也就是不会执行 #endif }
这样就可以适配新旧的API了
当然这只是很小的一部分,借此抛砖引玉,希望大家见谅拙笔.
相关文章推荐
- ios项目如何实现版本更新?
- 关于如何做自动化测试和何时做自动化测试的一点见解和疑问
- ios项目如何实现版本更新?
- 关于iOS 弃用API适配系统版本的最佳写法
- API需要同时维护多个版本如何优雅的设计?
- ios项目如何实现版本更新?
- APP API需要同时维护多个版本如何优雅的设计?
- 如何设置常驻通知的同时通知栏不显示小图标&如何在兼容低版本的前提下调用高版本的api
- 关于如何衡量项目的进度一点思考
- ios项目如何实现版本更新?
- iOS 项目如何实现版本的更新?
- iOS项目开发实战——如何使用Autoresizing进行屏幕适配
- ThinkPHP 5.0 微信小程序商场打通全栈项目 教您如何打造IOS,Android,Web多端适配
- [iOS常见问题] 关于IOS项目QQ空间授权提示安装最新版本的QQ的解决方法!
- iOS - 项目更换百度地图2.5版本, 适配iPhone6和iPhone6 plus出现的问题
- ios项目如何实现版本更新?
- 关于如何衡量项目的进度一点思考
- ios 关于如何在app里面设置版本更新功能
- 关于项目类库的重构和函数名的一点见解
- iOS如何限制使用SDK的版本? 解决iOS项目的版本兼容问题