UILabel取消自動Trim空格和換行等空白字元

來源:互聯網
上載者:User

標籤:

原文:http://www.tuicool.com/articles/AzmaMj

 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

UILabel取消自動Trim空格和換行等空白字元

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.