美文网首页技术日常
ios11~UILabel带行高限制文字2行显示估算宽高

ios11~UILabel带行高限制文字2行显示估算宽高

作者: 摹喵居士 | 来源:发表于2018-04-18 18:05 被阅读1736次

    2018.04.18

    UILabel控制

    • 限制文字2行内显示
    • 根据给定的宽度和单行高度,自动展示文字,多余的文字...
    • 用段落style,设置行高,lineBreakMode用NSLineBreakByTruncatingTail
    self.title.numberOfLines = 2;
    self.title.text = title;
    
    NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
    style.lineBreakMode = NSLineBreakByTruncatingTail;
    style.alignment = NSTextAlignmentLeft;
    style.lineSpacing = 5;
    
    // 设置行距
    NSAttributedString *attributedString = [[NSAttributedString alloc]initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:kCellTitleFontSize], NSParagraphStyleAttributeName:style}];
    self.title.attributedText = attributedString;
    [self.title sizeToFit];
    
    • 计算UILabel宽高
    CGSize titleSize = [self calc:title left:left];
    self.title.frame = CGRectMake(left, 0, titleSize.width, titleSize.height);
    
    • 这里的sylte.lineBreakMode要用NSLineBreakByWordWrapping
    NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
    style.lineBreakMode = NSLineBreakByWordWrapping;
    style.alignment = NSTextAlignmentLeft;
    style.lineSpacing = 5;
    CGSize maxSize = CGSizeMake(maxWidth, lineHeight * lineNum);
    NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:kCellTitleFontSize], NSParagraphStyleAttributeName:style};
    CGSize labelSize = [str boundingRectWithSize:maxSize options: NSStringDrawingTruncatesLastVisibleLine |  NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attribute context:nil].size;
    

    相关文章

      网友评论

        本文标题:ios11~UILabel带行高限制文字2行显示估算宽高

        本文链接:https://www.haomeiwen.com/subject/kolbkftx.html