标签: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