最近遇到了一個問題, 就是在做UILabel顯示文字的時候, 會出現label文字左右參差不齊的現象 如圖1所示.
圖1
下面我們就是用系統原生方法的富文本就可以輕松解決
NSString *str = @"????而“散文”一詞大概出現在北宋太平興國(976年十二月—984年十一月)時期。《辭?!氛J為[1] :中國六????朝以來,為區別于韻文和駢文,把凡不押韻、不重排偶的散體文章,包括經傳史書在內,概稱“????散文”。后又泛??指詩歌[2] 以外的所有文學體裁。??";
// 設置段落為左右對齊 NSTextAlignmentJustified
NSMutableParagraphStyle *par = [[NSMutableParagraphStyle alloc]init];
par.alignment = NSTextAlignmentJustified;
NSDictionary *dic = @{NSParagraphStyleAttributeName : par, NSUnderlineStyleAttributeName: @(NSUnderlineStyleNone)};
// 配置富文本
NSAttributedString *mstr = [[NSAttributedString alloc] initWithString:str attributes:dic];
UILabel *label2 = [[UILabel alloc]initWithFrame:CGRectMake(0, 20, [UIScreen mainScreen].bounds.size.width, 0)];
[self.view addSubview:label2];
// 自適應高度
label2.attributedText = mstr;
label2.numberOfLines = 0;
label2.backgroundColor = [UIColor redColor];
[label2 sizeToFit];
其中關鍵性的是兩句代碼:
1.這句代碼的意思是設置文字左右對齊
par.alignment = NSTextAlignmentJustified;
2.經過測試發現 配置富文本只帶段落屬性 左右對齊并不生效 所以我在后面配置了 下劃線后左右對齊就生效了
NSDictionary *dic = @{NSParagraphStyleAttributeName : par, NSUnderlineStyleAttributeName: @(NSUnderlineStyleNone)};
下面我們來預覽一下效果