字符串格式化
- 将小数类型的转换为字符串,有小数就显示没有就显示整数。
例如:源数据为 7.5,88,99,想显示成@"7.5", @"88", @"99"。
NSString *string = [NSString stringWithFormat:@"%@", @(number)];
富文本使用过程中遇到的问题
- 富文本中添加NSTextAttachment的时候,UITextView文字的行间距变窄。
先添加NSTextAttachment,然后再去调整整段富文本的文字大小属性。
UITextView *text = [[UITextView alloc] init];
[self.view addSubview:text];
NSMutableAttributedString *att = [[NSMutableAttributedString alloc] initWithString:@"开始京东方科技奥斯卡积分卡萨积分卡历史就分开了设计费设计费来看撒娇了飞机上浪费婕拉数据库了房间爱上浪费阿拉斯加福利卡设计费卢卡斯房间爱上开了房间辣康师傅拉克丝积分卡拉斯加福利卡设计费历史记录发螺蛳粉螺蛳粉拉伸弗利萨解放路开始发"];
NSTextAttachment *ment = [[NSTextAttachment alloc] init];
ment.bounds = CGRectMake(0, -4, 20, 20);
ment.image = [UIImage imageNamed:@"f_static_001@2x.png"];
NSAttributedString *mentAtt = [NSAttributedString attributedStringWithAttachment:ment];
// 先添加 NSTextAttachment
[att appendAttributedString:mentAtt];
// 调整整段文字的字体
[att addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16] range:NSMakeRange(0, att.length)];
text.frame = CGRectMake(0, 100, [UIScreen mainScreen].bounds.size.width, 300);
text.attributedText = att;
- UITextView 富文本中的链接,修改颜色
textView.linkTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor]};
打印
使用NSLog的一个风险是:它的运行会占用时间和设备资源。
解决方案:你以release模式编译的程序不会用NSLog输出,而你以debug模式编译的程序将执行NSLog的全部功能。
#ifndef __OPTIMIZE__
# define NSLog(…) NSLog(__VA_ARGS__)
#else
# define NSLog(…) {}
#endif
这个代码的魔术在于:release模式通常会定义 OPTIMIZE,当然debug模式不会。将这段代码放在你的头文件当中,你就可以放心的使用NSLog了
上面的宏是使用qDebug输出调试信息,在非Qt的程序中也可以改为printf,守护进程则可以改为syslog等等... 其中,决窍其实就是这几个宏 ##__VA_ARGS__, __FILE__, __LINE__ 和__FUNCTION__,下面介绍一下这几个宏:
补充:
1. __VA_ARGS__ 是一个可变参数的宏,很少人知道这个宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错, 你可以试试。
2. __FILE__ 宏在预编译时会替换成当前的源文件名
3. __LINE__宏在预编译时会替换成当前的行号
4. __FUNCTION__宏在预编译时会替换成当前的函数名称
- 自定义打印
#ifdef DEBUG //调试阶段
#define MYLog(...) NSLog(__VA_ARGS__)
#else //发布阶段
#define MYLog(...)
#endif
网友评论