计算文本高度

NSMutableParagraphStyle *muStyle = [[NSMutableParagraphStyle alloc]init];

    muStyle.lineSpacing=3;//设置行间距离

    muStyle.alignment = NSTextAlignmentLeft;//对齐方式

    NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:adWord];

    [attrStringaddAttribute:NSFontAttributeNamevalue:MaterialFontrange:NSMakeRange(0, attrString.length)];

    [attrStringaddAttribute:NSParagraphStyleAttributeNamevalue:muStylerange:NSMakeRange(0, attrString.length)];

    NSDictionary *attributes = @{NSFontAttributeName:MaterialFont,NSParagraphStyleAttributeName:muStyle};

    CGFloat h = [adWord boundingRectWithSize:CGSizeMake(kScreenWidth - 20*2, CGFLOAT_MAX)

                                     options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading

                                  attributes:attributescontext:nil].size.height;



外传1:

等你看到这些,估计会很开心。

但是,你就会发现直接用这高度去显示label,会发现有那么一行偶尔显示不出来

原因在float与int的问题了

我的做法

height= (int)h +1;


外传2:

文本高度 = 单行高度 + 行间距 + 单行高度 + 间距 + ... + 单行高度

值得注意的是,这个单行高度并不是等于字体的大小

比如我 苹方常规体13,它的行高18.2,哈哈


外传3:

有时候你会发现,后台返回的字符串本来是一行的,但是你计算出来却是两行或三行,很疑惑,很诡异。

我的遭遇:后台返回的字符串中,包含了换行符。因为返回的数据打印出来是\nBTC\U51fa\U73b0\U4ef7\U503c\U7ea62451\U4e07\U7f8e\U5这样子的,所以很难发现有换行符。

tip:换行符计算也会占有高度,尤其是设置了行高,占据的高度也会更大。

你可能感兴趣的:(计算文本高度)