如何讓label大小自適應字體大小

方法1:
</pre><pre name="code" class="objc">UILabel *label = [UILabel alloc] init];
label.text = @"myLabel";
//labelsize的最大值
CGSize maximumLabelSize = CGSizeMake(100, 9999);
//關鍵語句,根據label的內容獲取指定範圍內label的實際大小
CGSize expectSize = [label sizeThatFits:maximumLabelSize];
//繪製label的實際大小
label.frame = CGRectMake(0,0,expectSize.frame.size.width,expectSize.frame.size.height);
[self.view addSubview:label];


方法2:(此方法是label文字自適應label大小)

label.adjustsFontSizeToFitWidth = YES;

方法3:

轉自http://www.jianshu.com/p/7c834398d932

(iOS學習)UILabel自適應文字高度

注意:此方法僅適用於IOS6及以上

爲什麼要自適應高度 ?

簡單的說, 像微信的聊天框, 氣泡是不知道每次輸入的內容的, 如此一來, 需要Label適應文字的的高度, 以達到靈活的目的 .

自適應文字高度的效果:

Paste_Image.png


接下來, 我們來實現這個過程


實現的關鍵方法介紹 :

NSString下面有一個方法, 可以通過NSString類型的文本計算出文字的範圍

- boundingRectWithSize:options:attributes:context:

詳細請點擊官網

此處有四個參數 :

  • size
    限制最大寬高, 雖然是自適應, 但是需要限制最大的寬度和高度.
  • options
    一個枚舉, 繪製自定義方式字符串的選項(簡而言之, 通常情況下, 選3選項就夠用了, 如果效果不滿意, 再試試其他的選項吧 ) : NSStringDrawingOptions

    enum { 
    NSStringDrawingTruncatesLastVisibleLine = 1 << 5, 
    NSStringDrawingUsesLineFragmentOrigin = 1 << 0, 
    NSStringDrawingUsesFontLeading = 1 << 1, 
    NSStringDrawingUsesDeviceMetrics = 1 << 3,
    };typedef NSInteger NSStringDrawingOptions;
    1. NSStringDrawingTruncatesLastVisibleLine : 如果文本內容超出指定的矩形限制,文本將被截去並在最後一個字符後加上省略號 . 如果三選項沒有選擇, 忽略此選項.
    2. NSStringDrawingUsesLineFragmentOrigin : 整個文本將以每行組成的矩形爲單位計算整個文本的尺寸.
    3. NSStringDrawingUsesFontLeading : 以字體間的行距(leading,行距:從一行文字的底部到另一行文字底部的間距。)來計算高度。
    4. NSStringDrawingUsesDeviceMetrics : 計算佈局時使用圖像符號邊界, 而不是排版的邊界 .
  • attributes
    應用於字符串的文本屬性.

  • context
    NSStringDrawingContext
    控制如何調整字間距和縮放。對象包含的信息將用於文本繪製。該參數可爲 nil

  • 返回值
    返回一個矩形, 這個矩形爲文字所佔的矩形 .

實現過程


Paste_Image.png

實現效果


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章