- 很久没写了,今天一下子看到一个人关注小小的激动一下
适配屏幕尺寸的宏
- 根据不同的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