iOS开发之计算text和UILabel高度(UITableviewCell自适应)

第一步,先在Attributes Inspector将Label的Lines设为0,Line Breaks设为Word Wrap,并将Label的位置,宽度和高度等都设置好,然后设置好自动布局,或者用第三方框架实现布局(例如SDAutoLayout)。

第二步,添加以下方法

- (void)setTextAndAdjustLabel:(NSString *)text withLabel:(UILabel *)label

{

    CGFloat maxWidth = label.frame.size.width;  //获取标签宽度

    //根据文本,标签宽度,字体来计算尺寸

    CGRect rect = [text boundingRectWithSize:CGSizeMake(maxWidth, CGFLOAT_MAX)

                                     options:NSStringDrawingUsesLineFragmentOrigin

                                  attributes:@{NSFontAttributeName:label.font}

                                     context:nil];

    //更新标签的frame

    label.frame = CGRectMake(label.frame.origin.x,label.frame.origin.y,maxWidth,rect.size.height);

}

第三步,调用方法

[self setTextAndAdjustLabel:self.locationLabel.text withLabel:self.locationLabel];

之后在heightForRowAtIndexPath返回想要的高度,并调用reloaddata就可以自适应了

posted @ 2016-08-24 12:47  XuDeHong  阅读(363)  评论(0编辑  收藏  举报