首页 > 代码库 > ios系统判断某些适配 __IPHONE_OS_VERSION_MAX_ALLOWED
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。