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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM