繁体   English   中英

基于标签内容的ios7故事板动态UITableView单元格高度

[英]ios7 storyboard dynamic UITableView cell height based on label content

我正在尝试根据单元格中某些标签的内容实现动态UITableViewCell高度。 该单元格还添加了一些其他UI对象(图像视图,一些静态标签等),并且我为所有内容设置了约束。 仅需要动态调整一个标签的大小。

我使用这种方法来查找文本的大小:

-(CGFloat)getLabelHeightForText:(NSString *)text andWidth:(CGFloat)labelWidth
{
    CGSize maximumSize = CGSizeMake(labelWidth, 10000);

    UIFont *systemFont = [UIFont systemFontOfSize:15.0];
                               lineBreakMode:NSLineBreakByWordWrapping];

    CGSize labelSize = [text boundingRectWithSize:maximumSize options: NSStringDrawingUsesLineFragmentOrigin
                                       attributes: @{ NSFontAttributeName: systemFont } context: nil].size;
    return labelSize.height;
}

我肯定有更好的方法可以做到这一点,但目前为止有效。

在cellForRowAtIndexPath中,将标签的大小调整为能够容纳文本并设置适当的属性:

UILabel *reviewLabel = (UILabel *)[cell viewWithTag:102];

    //280 is the width of the label
    reviewLabel.preferredMaxLayoutWidth = 280;

    CGFloat reviewLabelHeight = [self getLabelHeightForText:reviewText andWidth:reviewLabel.frame.size.width];

    reviewLabel.frame = CGRectMake(reviewLabel.frame.origin.x, reviewLabel.frame.origin.y, reviewLabel.frame.size.width, reviewLabelHeight);

    reviewLabel.text = reviewText;

    reviewLabel.numberOfLines = 0;

    reviewLabel.lineBreakMode = NSLineBreakByWordWrapping;

并且效果很好,但无法调整实际像元高度的大小。 现在我有

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

NSString *reviewText = [review objectForKey:@"reviewText"];

//280 is the width of the review label
CGFloat textHeight = [self getLabelHeightForText:reviewText andWidth:280]; 
}

但我不确定如何使用该文本高度来调整单元格的大小。 如果文本长度足够小而无需调整大小,则单元格通常为91 px高。 因此,如果单元格不需要调整大小,或者如果确实需要调整大小,我必须返回91,以返回文本高度+足够的像素以适合单元格中的所有其他对象? 我对如何调整单元格的大小非常困惑。 标签可以调整大小,但无法弄清楚单元格。

在使用ios7 +时,请尝试

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath

而不是tableView:heightForRowAtIndexPath

并返回具有所需高度偏移量的CGFloat。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM