@fiy-fish
2017-04-14T21:02:36.000000Z
字数 1303
阅读 1045
工作日志
如图:
有一个蓝色的label和黄色的label
1.当显示两个label的内容绰绰有余时,Hugging 起作用 蓝色label Hugging设为low, 黄色label 设为height,结果蓝色label大小为contentSize,黄色label占据所有剩下的空间
2.当不能显示两个label的内容时,Compression 起作用 蓝色label Compression设为heigh,黄色label Compression设为low. 结果会完全显示蓝色label 的内容,压缩黄色label的内容。
参考:
在*-Prefix.pch里面添加
#define DEBUG_MODE
#ifdef DEBUG_MODE
#define DebugLog( s, ... ) NSLog( @"<%@:(%d)> %@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#else
#define DebugLog( s, ... )
#endif
这样当我们需要打印log时采用
DebugLog( s, ...)
如果我们需要打release版本
直接comment #define DEBUG_MODE,就可以了。
上面的宏是使用Debug输出调试信息, 其中,决窍其实就是这几个宏 ##__VA_ARGS__, __FILE__, __LINE__ 和__FUNCTION__,下面介绍一下这几个宏:
1) __VA_ARGS__ 是一个可变参数的宏,很少人知道这个宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错, 你可以试试。
2) __FILE__ 宏在预编译时会替换成当前的源文件名
3) __LINE__宏在预编译时会替换成当前的行号
4) __FUNCTION__宏在预编译时会替换成当前的函数名称
- 预处理连接符:`##`操作符
For example, you could do this:
#define XNAME(n) x ## n
Then the macro
XNAME(4)
would expand to the following:
x4