- 很久沒寫了,今天一下子看到一個人關注小小的激動一下
適配屏幕尺寸的宏
- 根據不同的iPhone尺寸寬高來設置大小,UI常常用iPhone6來設置尺寸,為了適配定義的宏:
#ifndef W_H_
#define W_H_
#define SCREENWIDTH ([UIScreen mainScreen].bounds.size.width)
#define SCREENHEIGHT ([UIScreen mainScreen].bounds.size.height)
// 依照iPhone6的尺寸設計
#define GETPIXEL (SCREENWIDTH / 375)
#define AUTOLAYOUTSIZE(size) (size * GETPIXEL)
#endif
- 解釋: 做成了代碼塊和加了宏保護,根據iPhone手機的尺寸顯示按比例來的尺寸
RGB
- UI給我們的常常是RGB顏色,所以需要我們轉換一下:
#define RGBCOLOR(R, G, B, A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A]
宏打印
- 顯示類名,行號,不然常常不知道自己的打印在哪里:
#define NSLog(FORMAT, ...) fprintf(stderr,"%s:%d \t%s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
- 解釋: fprintf是C/C++的一個格式化庫函數,fprintf()函數根據指定的format發送參數到stream(流)指定的文件,fprintf()只能和printf()一樣工作,fprintf()的返回值是輸出的字符數,發送錯誤時返回一個負值
- FILF: 當前文件夾的路徑,取lastPathComponent最后一個組件就成了類名
- LINE: 當前運行的代碼的行號數字
- VA_ARGC(variadic macros): 可變參數宏,讓宏NSLog可以接收多個參數
因為markdown的原因__打不出來,大家注意一下咯
Debug打印,Release不打印:
// 在 "Target > Build Settings > Preprocessor Macros > Debug" 里有一個"DEBUG=1"。
//設置為Debug模式下,Product-->Scheme-->SchemeEdit Scheme設置Build Configuration成Debug時,就可以打印nslog了。設置Release,發布app版本的時候就不會打印了,提高了性能
#ifdef DEBUG
#define NSLog(FORMAT, ...) fprintf(stderr,"%s:%d \t%s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#define debugMethod() NSLog(@"%s", __func__)
#else
#define NSLog(...)
#define debugMethod()
#endif