ios系统判断某些适配 __IPHONE_OS_VERSION_MAX_ALLOWED
Posted 总有刁民谋害朕
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios系统判断某些适配 __IPHONE_OS_VERSION_MAX_ALLOWED相关的知识,希望对你有一定的参考价值。
由于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的主要内容,如果未能解决你的问题,请参考以下文章