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]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM