UILabel计算高度

计算label的高度(尽量使用自动布局AutoLayout)

第一种:更方便的方法:

[label sizeToFit];//自动根据x/y以及宽度适应高度,直接取frame使用即可。

第二种:计算存在误差,建议使用第一种方法。

//textString:传入字符串
//defautWidth:默认宽度
//defautHeight:默认高度
//fontSize:字号大小

+(CGFloat)getLabelHeight:(NSString *)textString defautWidth:(float)defautWidth defautHeight:(float)defautHeight fontSize:(int)fontSize
{
    CGSize size = CGSizeMake(defautWidth,defautHeight);
    CGSize labelsize;
    
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_7_0
    NSDictionary * dic = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:fontSize] ,NSFontAttributeName,nil];
    labelsize = [textString boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;
    
#else
    labelsize = [textString sizeWithFont:font constrainedToSize:size lineBreakMode:NSLineBreakByWordWrapping];
#endif
    
    return labelsize.height;
}

最新更改(去除iOS7的判断,ios7 以前一般不用了)

- (CGFloat)getLabelHeight:(NSString *)textString defautWidth:(float)defautWidth defautHeight:(float)defautHeight fontSize:(int)fontSize
{
    CGSize size = CGSizeMake(defautWidth,defautHeight);
    CGRect labelRect;
    
    NSDictionary *dic = @{NSFontAttributeName:[UIFont systemFontOfSize:fontSize]};
    
    labelRect = [textString boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil];
    
    return labelRect.size.height;
}

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