如何让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

实现效果


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