在tableView单元格中更改UILabel框架高度

时间:2016-03-15 13:31:03

标签: ios objective-c uitableview

我从远程网址获取UILabel文本,有时文本太短/太长,我需要调整框架大小到文本高度。 我使用xib实现了服装单元格。

screenshot

这是我到目前为止所尝试的,它应该有效,但由于我无法理解的原因而无法工作:

 cell.fbLastObject.text = [NSString stringWithFormat:@"%@",update.fbLastObject];
 [cell.fbLastObject sizeToFit];

 //Cell Size
 CGSize labelSize = [cell.fbLastObject.text sizeWithFont:cell.fbLastObject.font
                                       constrainedToSize:cell.fbLastObject.frame.size
                                           lineBreakMode:NSLineBreakByWordWrapping];
 labelHeight = labelSize.height;
 cell.fbLastObject.frame = CGRectMake(0,0,300,labelHeight);

任何人都有任何想法?

4 个答案:

答案 0 :(得分:1)

对于iOS 8 and later,您可以使用UITableViewAutomaticDimension将以下代码放在viewDidLoad中:

  tableView.rowHeight = UITableViewAutomaticDimension;
  /* any estimated height but must be more than 2 */
  tableView.estimatedRowHeight = 160.0;
  tableview.delegate = self;
  tableview.dataSource = self;
 // you have created the SimpleTableViewCell.xib, So you need to register that cell with table.
  UINib *nib = [UINib nibWithNibName:@"SimpleTableViewCell" bundle:nil];
  [tableview registerNib:nib forCellReuseIdentifier:@"SimpleTableViewCell"];

现在为超级视图&添加适当的cell fbLastObject约束(顶部,底部,前导和尾部)引脚将行数设置为0

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"SimpleTableViewCell";

    SimpleTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
    // here set text for your cell label 
    cell.fbLastObject.text = @"My Text";

    [cell setNeedsLayout];
    [cell layoutIfNeeded];

    return cell;
}

答案 1 :(得分:0)

你可以试试self.tblView.rowHeight = UITableViewAutomaticDimension;

对于使用自动布局的动态单元格

答案 2 :(得分:0)

你可以通过映射UILabel的高度约束来计算远程网址的文本大小,并根据计算出的行的高度返回高度,并将该高度赋予映射的高度约束出口,并在返回单元格之前写入: -

[cell.UILabel updateConstraints];

答案 3 :(得分:0)

在您的问题中,您获取标签尺寸的步骤很好。将Label的属性SizeToFit和NumberOfLines设置为0,并为其添加适当的约束。然后为Label的Height约束创建一个NSLayoutConstraint实例,并将其附加到UITableViewCell的底部。然后,当您从文本中获得CGSize时,您需要在self上调用UpdateConstraintIfNeeded,然后需要为该Label的约束&设置高度常量属性。需要设置UITableVIew的heightForRowAtIndexpath。 希望这会奏效。