iOS - UILabel Attributed

本文主要介紹:文字適應(yīng)UILabel,UILabel適應(yīng)文字

* 文字適應(yīng)UILabel

文字大小根據(jù)UILabel的尺寸縮放

  // 設(shè)置文字自適應(yīng)
  _label.adjustsFontSizeToFitWidth = YES;
  // UIBaselineAdjustmentAlignBaselines 居下
  // UIBaselineAdjustmentAlignCenters 居中
  // UIBaselineAdjustmentNone 居上
  _label.baselineAdjustment = UIBaselineAdjustmentAlignCenters; 

* UILabel適應(yīng)文字

需要UILabel適應(yīng)文字,在寬度一定的時(shí)候,那就需要計(jì)算文字的高度,計(jì)算文字高度的方法有以下幾種:

1.此方法適合一行的文字計(jì)算,如果行數(shù)越多,由于換行時(shí)可能會(huì)有一個(gè)文字顯示不下的空隙,導(dǎo)致計(jì)算值不準(zhǔn)確。如本圖所示,高度計(jì)算偏小。

CGSize size = [text boundingRectWithSize:CGSizeMake(_textLab.frame.size.width, CGFLOAT_MAX)
                                    options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
                                 attributes:@{NSFontAttributeName:_textLab.font}
                                    context:nil].size;
一段文字

2.當(dāng)有文字分段的時(shí)候,因?yàn)閾Q行產(chǎn)生的占位符,上面的方法就不能準(zhǔn)確計(jì)算出文字高度了,這就需要下面的方法

textLab.text = text;
_tHeight = [_textLab sizeThatFits:CGSizeMake(_textLab.frame.size.width, MAXFLOAT)].height;
分段文字

3.當(dāng)有文字分段的時(shí)候,并且還需要對(duì)段落的文字樣式做不同定制的時(shí)候,這就需要下面的方法

// 第一種樣式
NSMutableParagraphStyle *paragraphStyle1 = [[NSMutableParagraphStyle alloc] init];
paragraphStyle1.lineSpacing = 2; //增加行高
//paragraphStyle1.paragraphSpacing = 10;  //段落后面的間距
NSMutableAttributedString *showStr = [[NSMutableAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName:_textLab.font,NSParagraphStyleAttributeName:paragraphStyle1.copy,NSBackgroundColorAttributeName:_textLab.backgroundColor}];
// 第二種樣式    
NSMutableParagraphStyle *paragraphStyle2 = [[NSMutableParagraphStyle alloc] init];
paragraphStyle2.lineSpacing = 2;
[showStr appendAttributedString:[[NSAttributedString alloc] initWithString:dText attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10.0],NSParagraphStyleAttributeName:paragraphStyle2.copy,NSBackgroundColorAttributeName:_textLab.backgroundColor,NSForegroundColorAttributeName:[UIColor redColor]}]];
_textLab.attributedText = showStr;
_tHeight = [_textLab sizeThatFits:CGSizeMake(_textLab.frame.size.width, MAXFLOAT)].height;
樣式不同分段文字
高度計(jì)算正確后,將UILabel的布局更新下就完成了。
源代碼地址:Demo
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 3月21日,我的一天之魔鬼訓(xùn)練(3)。 今天是星期二,每天一次的訓(xùn)練又開(kāi)始了。我先按照老爸給我的計(jì)劃,先慢跑三圈,...
    Sernedipity閱讀 309評(píng)論 0 0
  • 前幾天做微商的網(wǎng)友頻頻在朋友圈發(fā)布一款唇膏的營(yíng)銷(xiāo)廣告,精美的造型,良好的品質(zhì),閃亮的色澤,通過(guò)...
    月下瀟歌閱讀 264評(píng)論 0 0
  • 今夜我獨(dú)眠 沒(méi)有理想中的愜意 只留寂寞里的空虛
    如何_c7ba閱讀 186評(píng)論 0 0
  • Part 2 Writing 2.1 Summarize written text 簡(jiǎn)寫(xiě)段落 2.2 Write ...
    什錦飯閱讀 398評(píng)論 0 0
  • 數(shù)據(jù)--->結(jié)果 要求:將右邊的表格轉(zhuǎn)換成左邊的表格。就是一維表轉(zhuǎn)二維表。 思路: 1、先聲明一個(gè)足夠大的數(shù)組,用...
    葉知行閱讀 1,430評(píng)論 0 1