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

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;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近在项目中频繁遇到显示多少行文字的需求,有的需求是在什么情况下都只显示1行文字,有的需求是要求显示多少行文字由服...
    Shrock阅读 9,495评论 0 2
  • //学习内容 /* 1.控件 UIView UILabel UITextField UITextView UIBu...
    Matte阅读 4,860评论 0 0
  • 一、简介 <<UILabel类实现一个只读的文本视图。您可以使用这个类的静态文本,如你可能会使用它来识别你的用户界...
    无邪8阅读 5,107评论 0 0
  • UILabel是一个常用的控件,它的属性设置的方法在纯代码中经常使用。在storyboard中,使用UILabel...
    坤哥lqk阅读 4,304评论 0 2
  • Speak softly love and hold me warm against your heart I f...
    ohaugustrush阅读 1,579评论 0 0