文本占用的高度和范围

NSString *string = @"现在想来,我们这波第一批老去的90后还是挺幸运的。在我们最好的年龄遇到了最好的华语乐坛(周杰伦巅峰 林俊杰 SHE  潘玮柏 蔡依林…),遇到了巅峰的星爷,遇到了最好的西科东艾北卡南麦,动画城陪我们成长,周杰伦陪我们成熟,我们看着星爷老去,见证科比退役,或许我们不是最好的一代,但一定是最精彩的一代。";
复制代码

1.sizeWithAttributes计算宽、高 size#

CGSize size_0 = [string sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:17]}];
复制代码

这种方式计算的宽度会根据字符串的长度无限的增加

2、boundingRectWithSize计算宽、高的 rect#

CGRect size_1 = [string boundingRectWithSize:CGSizeMake(320, MAXFLOAT)
                                             options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine
                                          attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:14.0]}
                                             context:nil];
复制代码

这种方式的计算的宽度在达到预设的宽的时候会自动换行计算高度

options 枚举#

NSStringDrawingUsesLineFragmentOrigin   //整个文本将以每行组成的矩形为单位计算整个文本的尺寸
NSStringDrawingUsesFontLeading      //使用字体的行间距来计算文本占用的范围,即每一行的底部到下一行的底部的距离计算
NSStringDrawingUsesDeviceMetrics        //将文字以图像符号计算文本占用范围,而不是以字符计算。也即是以每一个字体所占用的空间来计算文本范围
NSStringDrawingTruncatesLastVisibleLine     //当文本不能适合的放进指定的边界之内,则自动在最后一行添加省略符号。如果NSStringDrawingUsesLineFragmentOrigin没有设置,则该选项不生效
复制代码

转载于:https://juejin.im/post/5a93c94f5188257a76634e77

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值