UILabel自动计算行高 并且 最多显示n行

该段代码作用(iOS开发)

1、根据文本动态计算label需要的高度

2、可以添加最多显示多少行 

      例如:在论坛回复里边有“点击查看全文功能” 默认的最多只显示3行  点击查看全文时候 >显示全文   此类的 情况下 可以使用    

     此段代码算是动态计算label高度的升级版吧

//创建label
    NSString * labelStr = @”你好,这是UILabel的例如:在论坛回复里边有“点击查看全文功能” 默认的最多只显示3行  点击查看全文时候 >显示全文   此类的 情况下 可以使用  “;
    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 160, 200, 14)];
    label.font = [UIFont systemFontOfSize:11];
    label.backgroundColor = [UIColor orangeColor];
    label.text = labelStr;
    label.numberOfLines = 0;
    [self.view addSubview:label];

[self dynamicCalculationLabelHight:label];

————  分割线  ——————

– (void)dynamicCalculationLabelHight:(UILabel*) label{
    //有源码在 有需求自行微调即可
    NSInteger n = 6;//最多显示的行数
    CGSize labelSize = {0, 0};
    
    labelSize = [self  ZFYtextHeightFromTextString:label.text width:label.frame.size.width fontSize:label.font.pointSize];
    
   // NSLog(@”%f”,label.font.pointSize);//获取 label的字体大小
    //NSLog(@”%f”,label.font.lineHeight);//获取label的在不同字体下的时候所需要的行高
    //NSLog(@”%f”,labelSize.height);//label计算行高

    CGFloat rate = label.font.lineHeight; //每一行需要的高度

    CGRect frame= label.frame;
    if (labelSize.height>rate*n) {
        frame.size.height = rate*n;
    }else{
        frame.size.height = labelSize.height;
    }
    label.frame = frame;
}

 

    //计算 label需要的宽度和高度方法

-(CGSize)ZFYtextHeightFromTextString:(NSString *)text width:(CGFloat)textWidth fontSize:(CGFloat)size{
    //计算 label需要的宽度和高度
    NSDictionary *dict = @{NSFontAttributeName:[UIFont systemFontOfSize:size]};
    CGRect rect = [text boundingRectWithSize:CGSizeMake(textWidth, MAXFLOAT) options:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil];
    
     CGSize size1 = [text sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:size]}];
    
    return CGSizeMake(size1.width, rect.size.height);
}

转载请注明出处http://my.oschina.net/u/2523541/blog/676724

如果感觉写的不错麻烦关注一下

对以上代码有疑问可以留言告诉我

 

    原文作者:移动开发
    原文地址: https://my.oschina.net/iceTear/blog/676724
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞