根据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被切掉.

}

posted @ 2016-03-29 21:04  喜狼狼  阅读(165)  评论(0编辑  收藏  举报