UILabel自适应大小的新方法boundingRectWithSize:options:attributes:context:

iOS7以前我们对UILabel进行根据内容自适应大小的时候会使用方法sizeWithFont:constrainedToSize:lineBreakMode,但是这个方法在iOS7之后就被Deprecated了。对此,iOS7提供了一个新的方法来替代它,就是NSString的成员方法:

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context;

相信很多人对于这个方法还比较陌生,尤其是不知道那个attributes参数是干啥用的。这里简单介绍一下这些参数:

参数:

size:

宽高限制,用于计算文本绘制时占据的矩形块。宽度的限制一般就是view的宽度,如果高度不限定的话就设为0就行了,例如{320,0}。


options:

文本绘制时的附加选项。可能取值请参考“NSStringDrawingOptions”.

具体有以下几个类型:

NSStringDrawingTruncatesLastVisibleLine

如果文本内容超出指定的矩形限制,文本将被截去并在最后一个字符后加上省略号。如果指定了NSStringDrawingUsesLineFragmentOrigin选项,则该选项被忽略。

NSStringDrawingUsesLineFragmentOrigin

绘制文本时使用 line fragement origin 而不是 baseline origin。

NSStringDrawingUsesFontLeading

计算行高时使用行间距。(译者注:字体大小+行间距=行高)

NSStringDrawingUsesDeviceMetrics

计算布局时使用图元字形(而不是印刷字体)。


attributes:

关于attributes官方的说明是这样的:

A dictionary of text attributes to be applied to the string. These are the same attributes that can be applied to an NSAttributedString object, but in the case of NSString objects, the attributes apply to the entire string, rather than ranges within the string.

但是我们用来计算label的大小的时候只需要用的font这个属性就行了,例如:

NSDictionary * attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:18.0]};

context

context上下文。包括一些信息,例如如何调整字间距以及缩放。最终,该对象包含的信息将用于文本绘制。该参数可为 nil 。


返回值
一个矩形,大小等于文本绘制完将占据的宽和高。

具体的例子如下:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

现场喷口水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值