码迷,mamicode.com
首页 > 移动开发 > 详细

ios系统判断某些适配 __IPHONE_OS_VERSION_MAX_ALLOWED

时间:2017-04-21 19:13:41      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:tde   低版本   ios   编译错误   不同的   iphone   版本   最新   ios系统   

由于app的最新设计字体是ios9之后的平方字体,但app最低支持ios7,so...想在常量配置文件类里统一适配下字体,如下:

//适配字体,ios9及以上系统使用新字体——平方字体
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0

#define kFontSize15 [UIFont fontWithName:@"PingFangSC-Light" size:15.0]

#else

#define kFontSize15 [UIFont systemFontOfSize:15.0]

#endif

在ios8的测试环境下,打印 kFontSize15 为 null,由此可见,上面的宏编译条件判断条件不对,__IPHONE_OS_VERSION_MAX_ALLOWED 针对的是编译器,在不同版本的编译器xcode里,宏__IPHONE_OS_VERSION_MAX_ALLOWED 对应不同的版本,xcode8.3里是这样的:

#define __IPHONE_OS_VERSION_MAX_ALLOWED     __IPHONE_10_3

所以,#if后的判断条件不对,而这样的判断适用于那些第三方服务开发者,他们需兼容高低xcode版本保证最新的api跑在低版本的xcode上不会编译错误。同样

#ifdef __IPHONE_9_0 与上面一样,只保证你的代码在低版本编译的时候不出错。

最后,适配写成这样:

#define SYSTEM_VERSION ([[UIDevice currentDevice] systemVersion])
#define IOS9_OR_LATER (SYSTEM_VERSION.floatValue >= 9.0)
#define kFontSize15 IOS9_OR_LATER ? [UIFont fontWithName:@"PingFangSC-Light" size:15.0]:[UIFont systemFontOfSize:15.0]

 

ios系统判断某些适配 __IPHONE_OS_VERSION_MAX_ALLOWED

标签:tde   低版本   ios   编译错误   不同的   iphone   版本   最新   ios系统   

原文地址:http://www.cnblogs.com/weixw/p/6744840.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!