由於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]
