label 高度自适应

来源:互联网 发布:图片解压软件 编辑:程序博客网 时间:2024/04/30 03:56
//获取 label 高度
-(CGFloat)sizetofit:(NSString *)text
{
    float dev=[[[UIDevice currentDevice]systemVersion]floatValue];
    if (dev>=7.0) {
        NSDictionary *dict=@{
                             NSFontAttributeName: [UIFont systemFontOfSize:12.0f]
                             };
        
        CGRect frame=[text boundingRectWithSize:CGSizeMake(300, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading|NSStringDrawingTruncatesLastVisibleLine attributes:dict context:nil];
        return frame.size.height;
        
    }else{
        CGSize size=[text sizeWithFont:[UIFont systemFontOfSize:12.0f] constrainedToSize:CGSizeMake(300, CGFLOAT_MAX) lineBreakMode:NSLineBreakByCharWrapping];
        return size.height;
    }
}
-(CGFloat)heightForString:(NSString *)string fontSize:(float)fontSize andWidth:(float)width
{
    if (string==nil) {
        return 0;
    }
    
    float dev=[[[UIDevice currentDevice]systemVersion]floatValue];
    if (dev>=7.0) {
        if ((NSNull *)string == [NSNull null]) {
            return 0;
        }
        if (string!=nil && string.length>1) {
            UIFont * tfont = [UIFont systemFontOfSize:fontSize];
            CGSize size = CGSizeMake(width,CGFLOAT_MAX);
            NSDictionary * tdic = [NSDictionary dictionaryWithObjectsAndKeys:tfont,NSFontAttributeName,nil];
            CGSize actualsize =[string boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesFontLeading attributes:tdic context:nil].size;
            return actualsize.height;
        }
        return 0;
        
    }
    else {
        if (string!=nil && string.length>1) {
            CGSize sizeToFit = [string sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:CGSizeMake(width, CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping];//此处的换行类型(lineBreakMode)可根据自己的实际情况进行设置
            return sizeToFit.height;
        }
        return 0;
    }
    
}
这两段代码都可以,还需设置下label的 numberofline= 0 breakMode 以及 重新设置label.frame 如果在tableview上要重新设置cell的高度.
0 0