tableView单元格中标签的帧大小不会改变

时间:2014-08-27 19:03:20

标签: ios objective-c uitableview tableview

我在故事板上工作。我有继承自tableViewVC的View Controller。在那个vc中,我有一行或两行文本。如果我有一行,我只需将文本分配给自定义单元格中的自定义textLabel。如果我有2行,我会调整标签框的大小。但是在加载表时它不起作用。只有在向上/向下滚动tableView后,我才能在单元格中看到调整大小的标签。我该如何解决?

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
OptionItem *item = _currentOptionsList[indexPath.row];

static NSString *CellIdentifier = @"OptionSimpleCellIdentifier";
OptionSimpleCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

cell.titleLabel.text = item.title;
cell.haveDetail = item.haveDetailItems;
cell.selectedSimpleOption = item.simpleSelected;
if (item.haveSelectedDetailItem)
{
    cell.detailLabel.text = [item.detailItems[item.indexOfSelecteDetaildItem] title];

} else {
    cell.detailLabel.text = nil;
    cell.detailImageView.image = nil;
}


CGFloat textHeight = [Calculatons getLabelHeightForText:item.title andWidth:225 withFont:kFontListCell withMaxHeight:0];//19 - 39
CGRect rect = cell.titleLabel.frame;

NSLog(@"textHeight = %f cell.height = %f titleLabel.height %f \n",textHeight, cell.frame.size.height, cell.titleLabel.frame.size.height);

if (textHeight > 21)
{
    rect.size.height = 41;
    cell.titleLabel.frame = rect;
}


  //nothing of this not works
  [cell.titleLabel layoutIfNeeded];
    [cell.titleLabel setNeedsLayout];
[cell.titleLabel setNeedsUpdateConstraints];
  [cell.titleLabel setNumberOfLines:0];

return cell;
}

http://s23.postimg.org/8tszefzbf/Screen_Shot_2014_08_27_at_10_01_10_PM.png

在第一个屏幕之后,我推VS.第二个屏幕是我向上和向下滚动表格后显示的内容。

推送VC后,我需要第二个屏幕。

1 个答案:

答案 0 :(得分:1)

尝试在代码中使用前面的代码,在单元格初始化之后,而不是在将值设置为标签之后。

CGFloat textHeight = [Calculatons getLabelHeightForText:item.title andWidth:225 withFont:kFontListCell withMaxHeight:0];//19 - 39
CGRect rect = cell.titleLabel.frame;

NSLog(@"textHeight = %f cell.height = %f titleLabel.height %f \n",textHeight, cell.frame.size.height, cell.titleLabel.frame.size.height);

if (textHeight > 21)
{
    rect.size.height = 41;
    cell.titleLabel.frame = rect;
}