打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[iOS]UILabel取消自动Trim空格和换行等空白字符

iOS7.0以后的UILabel会自动将Text行尾的空白字符全部去除,除了常见的半角空格(\0×20)和制表符(\t)之外,全角空格(\u3000)也被计算在内,甚至连多余的换行符(\r,\n)也被自动去除了。这一点虽然方便直接将控件赋值和无需取值后再trim,但是太过智能化了之后,往往不能满足一些本可以简单实现的需求。


需求1.使用添加\n方式将上下文本连续空两行,即实现文本的2倍行距。
iOS7.0之前解决办法:在每个换行符后面添加一个空格
即如果要显示为:

aaaaaaa空行空行bbbbbb

使用以下格式进行文本赋值

lbl.text = @"aaaaaaa\n\u0020\n\u0020bbbbbb";

iOS7.0之后需要增加,不增加则无效

lbl.numberOfLines = 0; // 0表示行数不固定lbl.lineBreakMode=UILineBreakModeWordWrap; // 允许换行(可选)

需求2.在所有的UILabel的text后增加一个空格,并使text右对齐。
iOS7.0之前解决办法:直接在text后增加空格即可,即text在赋值前增加空格。

lbl.text = [NSString stringWithFormat:@"%@%@","aaaaa","\u0020"];

iOS7.0之后需要重写UILabel的drawTextInRect方法,通过缩短默认文本绘制Rect的宽度半个字体宽度来实现。
具体实现代码如下:
文件名:MyLabel.h

#import <UIKit/UIKit.h> @interface MyLabel : UILabel@end

文件名:MyLabel.m

#import "MyLabel.h" @implementation MyLabel-(id) initWithFrame:(CGRect)frame {    self = [super initWithFrame:frame];    if(self){     return self;    }    } -(void) drawTextInRect:(CGRect)rect {  //从将文本的绘制Rect宽度缩短半个字体宽度  //self.font.pointSize / 2	  return [super drawTextInRect:CGRectMake(rect.origin.x, rect.origin.y, rect.size.width - self.font.pointSize / 2, rect.size.height)];}@end

附录:
UILabel会自动清除的空白字符(UNICODE)
\u0009 CHARACTER TABULATION
\u000A LINE FEED
\u000D CARRIAGE RETURN
\u0020 SPACE
\u0085 NEXT LINE
\u00A0 NBSP
\u1680 OGHAM SPACE MARK
\u180E MONGOLIAN VOWEL SEPARATOR
\u2000 EN QUAD
\u200A HAIR SPACE
\u200B ZERO WIDTH SPACE
\u2028 LINE SEPARATOR
\u2029 PARAGRAPH SEPARATOR
\u202F NARROW NO-BREAK SPACE
\u205F MEDIUM MATHEMATICAL SPACE
\u3000 IDEOGRAPHIC SPACE

如果您喜欢本文,请分享到:     

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
iOS的UILabel设置居上对齐,居中对齐,居下对齐
js、jQuery中去除空格、回车 空白字符
6.12 trim和clean清除空格与不可见字符
trim函数的应用
Excel常用函数之TRIM函数
Excel小技巧,四种方法清除Excel空白格
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服