UILabel显示固定行数的问题

来源:互联网 发布:天津加工中心编程招聘 编辑:程序博客网 时间:2024/06/04 19:05

在项目中我们有时会遇到这样的需求:显示一段文字,但这段文字最多显示4行。

我们首先考虑没有行数显示的情况:

UILabel * lbl = [[UILabelalloc] init];

    lbl.backgroundColor = [UIColorredColor];

    lbl.textColor = [UIColorblackColor];

    lbl.numberOfLines =0;

    lbl.text =@"连卡精神分裂就离开家啊";

    lbl.lineBreakMode =UILineBreakModeWordWrap;

    NSMutableDictionary * dic = [NSMutableDictionarydictionary];

    dic[NSFontAttributeName] = [UIFontsystemFontOfSize:17];

    CGRect rect = [lbl.textboundingRectWithSize:CGSizeMake(100,MAXFLOAT) options:NSStringDrawingUsesLineFragmentOriginattributes:dic context:nil];

    NSLog(@"%f-----%f", rect.size.width, rect.size.height);

    lbl.frame = (CGRect){{0,20}, rect.size};

 

    [self.viewaddSubview:lbl];

这样单元格高度会进行自适应。

如果显示固定行数,我们需要知道固定行数时单元格的高度

UILabel * lbl = [[UILabelalloc] init];

    lbl.backgroundColor = [UIColorredColor];

    lbl.textColor = [UIColorblackColor];

    lbl.numberOfLines =0;

    lbl.text =@"连卡精神分裂就离开家啊";

    lbl.lineBreakMode =UILineBreakModeWordWrap;

    NSMutableDictionary * dic = [NSMutableDictionarydictionary];

    dic[NSFontAttributeName] = [UIFontsystemFontOfSize:17];

    CGRect rect = [lbl.textboundingRectWithSize:CGSizeMake(100,MAXFLOAT) options:NSStringDrawingUsesLineFragmentOriginattributes:dic context:nil];

    NSLog(@"%f-----%f", rect.size.width, rect.size.height);

    lbl.frame = (CGRect){{0,20}, rect.size};

  if (rect.size.height >102) {

        lbl.numberOfLines =5;

        lbl.frame = (CGRect){{0,20}, {100,101.435547}};

    }

    [self.viewaddSubview:lbl];



1 0