根据label字数计算UILable高度

//boundingRectWithSize 的使用, 根据label字数计算UILable高度, 包含Emoji及多属性string

  • (NSInteger)heightForChangeableLabel:(NSString *)text labelWidth:(NSInteger)labelWidth font:(UIFont *)font{
    // [answerStr boundingRectWithSize:CGSizeMake(230, 0) options:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]} context:nil]

    NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:text];

    NSRange allRange = [text rangeOfString:text];
    [attrStr addAttribute:NSFontAttributeName
    value:font
    range:allRange];
    [attrStr addAttribute:NSForegroundColorAttributeName
    value:[UIColor blackColor]
    range:allRange];

// NSRange destRange = [text rangeOfString:text];
// [attrStr addAttribute:NSForegroundColorAttributeName
// value:HEXCOLOR(0x009cdd)
// range:destRange];

NSStringDrawingOptions options =  NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading;

CGRect rect = [attrStr boundingRectWithSize:CGSizeMake(labelWidth, CGFLOAT_MAX) options:options context:nil];

return rect.size.height+2;  //加两个像素,防止emoji被切掉.

}

原文地址:https://www.cnblogs.com/xilanglang/p/5334752.html