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的主要内容,如果未能解决你的问题,请参考以下文章

iOS_25_彩票骨架搭建+导航栏适配

ios8 之后的Rate us链接地址----屏幕适配判断 和iOS系统按本判断

iOS 10 的适配问题

iOS版本

iOS 10 的适配问题-b

iOS 10 版本适配问题收集-b