UILabel自动计算行高 并且 最多显示n行
博客专区 > 冰泪_ 的博客 > 博客详情
UILabel自动计算行高 并且 最多显示n行
冰泪_ 发表于2年前
UILabel自动计算行高 并且 最多显示n行
  • 发表于 2年前
  • 阅读 2361
  • 收藏 23
  • 点赞 4
  • 评论 9

【腾讯云】如何购买服务器最划算?>>>   

摘要: iOS label自动计算行高。自动计算行高切只显示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

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

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

 

共有 人打赏支持
粉丝 13
博文 65
码字总数 45965
评论 (9)
慢慢成长
代码没高亮1
宇林木风
干啥用也不说明下,整理下格式吧,毕竟被置顶了~
冰泪_

引用来自“慢慢成长”的评论

代码没高亮1
我看看怎么高亮
冰泪_

引用来自“宇林木风”的评论

干啥用也不说明下,整理下格式吧,毕竟被置顶了~
好的 我整理下
iiiiiiiii
怎么还在首页推荐
冰泪_

引用来自“Axel_”的评论

怎么还在首页推荐

这个不是很清楚 这个的机制
卖茄子
为什么不直接封装成控件。。
冰泪_

引用来自“卖茄子”的评论

为什么不直接封装成控件。。

项目中使用到了就随手写了下 几行代码的事 也就懒得封装了
杨志强
额 这个算升级么?单纯计算frame啊……用的接口也是旧的啊……
×
冰泪_
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: