[iOS]UILabel取消自动Trim空格和换行等空白字符
2016-08-16 10:43
876 查看
iOS7.0以后的UILabel会自动将Text行尾的空白字符全部去除,除了常见的半角空格(\0x20)和制表符(\t)之外,全角空格(\u3000)也被计算在内,甚至连多余的换行符(\r,\n)也被自动去除了。这一点虽然方便直接将控件赋值和无需取值后再trim,但是太过智能化了之后,往往不能满足一些本可以简单实现的需求。
需求1.使用添加\n方式将上下文本连续空两行,即实现文本的2倍行距。
iOS7.0之前解决办法:在每个换行符后面添加一个空格
即如果要显示为:
使用以下格式进行文本赋值
iOS7.0之后需要增加,不增加则无效
需求2.在所有的UILabel的text后增加一个空格,并使text右对齐。
iOS7.0之前解决办法:直接在text后增加空格即可,即text在赋值前增加空格。
iOS7.0之后需要重写UILabel的drawTextInRect方法,通过缩短默认文本绘制Rect的宽度半个字体宽度来实现。
具体实现代码如下:
文件名:MyLabel.h
文件名:MyLabel.m
附录:
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
需求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 @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
相关文章推荐
- [iOS]使用UIActivityViewController实现AirDrop功能
- 持续集成CI工具CruiseControl.NET的配置
- iOS开发之UITabBarController记录上一次选中的tabIndex并返回
- iOS开发之自定义系统的UIActionSheet修改按钮的属性
- iOS开发之自定义系统的UIAlertView调整Alert字体
- iOS开发之让UITableView滚动控制并返回到最顶端
- iOS开发之创建背景透明或含有自定义图片的UIToolbar
- iOS开发之UIToolbar和UINavigationBar的UIBarButtonItem的距离调整
- UIView的部分圆角问题
- 用JS控制页面表单(From)中单选(Radio)控件值(value)的方法
- iOS流布局UICollectionView系列三——使用FlowLayout进行更灵活布局
- iOS UICollectionView
- Android中利用5.0系统屏幕录制UI漏洞骗取应用录制屏幕授权
- iOS流布局UICollectionView系列六——将布局从平面应用到空间
- 求最大上升序列的二分搜索算法 poj 2533 Longest Ordered Subsequence
- mysql oom之后的page 447 log sequence number 292344272 is in the future
- .NET定时任务执行管理器开源组件–FluentScheduler
- 设计模式之Builder模式
- Swing组件的updateUI()和repaint()
- IOS CAShapeLayer CAGradientLayer UIBezierPath 使用实例 - 景树园