zoukankan      html  css  js  c++  java
  • iOS UILabel自定义行间距时获取高度

    本文介绍一下自定义行间距的UILabel的高度如何获取,需要借助一下开源的UILabel控件:TTTAttributedLabel

    附下载地址 https://github.com/TTTAttributedLabel/TTTAttributedLabel 

    下载后,添加到工程里面,导入头文件

     #import "TTTAttributedLabel.h"

    直接上代码

    NSString *str = @"UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度.";
        
        //创建tttLabel
        TTTAttributedLabel *tttLabel = [[TTTAttributedLabel alloc] initWithFrame:CGRectMake(30, 55, 300, 100)];
        tttLabel.lineBreakMode = NSLineBreakByCharWrapping;
        tttLabel.lineSpacing = 6;//设置行间距
        tttLabel.font = [UIFont systemFontOfSize:12];
        tttLabel.numberOfLines = 0; //设置行数为0
        [tttLabel setText:str];
        tttLabel.textAlignment = NSTextAlignmentLeft;
        tttLabel.backgroundColor = [UIColor redColor];
        [self.view addSubview:tttLabel];
        
        //获取tttLabel的高度
        //先通过NSMutableAttributedString设置和上面tttLabel一样的属性,例如行间距,字体
        NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:str];
        //自定义str和TTTAttributedLabel一样的行间距
        NSMutableParagraphStyle *paragrapStyle = [[NSMutableParagraphStyle alloc] init];
        [paragrapStyle setLineSpacing:6];
        //设置行间距
        [attrString addAttribute:NSParagraphStyleAttributeName value:paragrapStyle range:NSMakeRange(0, str.length)];
        //设置字体
        [attrString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12] range:NSMakeRange(0, str.length)];
        
        //得到自定义行间距的UILabel的高度
        CGFloat height = [TTTAttributedLabel sizeThatFitsAttributedString:attrString withConstraints:CGSizeMake(300, MAXFLOAT) limitedToNumberOfLines:0].height;
        
        //重新改变tttLabel的frame高度
        CGRect rect = tttLabel.frame;
        rect.size.height = height;
        tttLabel.frame = rect;
  • 相关阅读:
    CSS预编译:less入门
    JavaScript学习(五):函数表达式
    关于JavaScript new 的一些疑问
    JavaScript学习(四):面对对象的程序设计
    JavaScript学习(三):引用类型
    JavaScript学习(二):变量、作用域和内存问题
    JavaScript学习(一):基本概念
    匿名函数的this指向为什么是window?
    阿里云ECS在CentOS 6.8中使用Nginx提示:nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)的解决方法
    Centos释放缓存
  • 原文地址:https://www.cnblogs.com/wb145230/p/4464430.html
Copyright © 2011-2022 走看看