0

我的应用程序遇到了非常奇怪的问题。我正在动态创建表格视图单元格。并根据内容调整单元格标签的高度。

我的问题是我的单元格标签在换行后没有显示最后一行意味着如果我的标签总共有三行,那么标签只显示两行。该代码在 iOS6 上运行,但在 iOS 7 上出现问题。

 [labelCell.contentView bringSubviewToFront:labelCell.textLabel];
 labelCell.textLabel.numberOfLines = 0;
 labelCell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;
 NSString *fieldLabel = labelCell.textLabel.text;
 CGSize textSize = [self sizeForLabelWithString:fieldLabel width:600.0f  andIndexPath:indexPath];
 float newHeight = textSize.height+22.0f;
 labelCell.height = newHeight;
4

3 回答 3

1

我遇到了同样的问题,只是偶然发现了这个。我的标签正在调整到正确的大小,但它没有显示任何包装成几行的标签上的最后一行。此外,当我选择/取消选择单元格时,我可以突然看到最后一行。

我能够通过在单元格的高度上添加一个小的软糖因子(2 分)来解决这个问题。我更新了用于单元格高度的值:

return labelHeight + 2 * kTopAndBottomPadding;

至:

return labelHeight + 2 * kTopAndBottomPadding + 2.f;
于 2014-07-24T19:45:53.460 回答
1

使用这个方法:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
     NSString *fieldLabel = labelCell.textLabel.text;

    CGSize textSize = [fieldLabel sizeWithFont:[UIFont fontWithName:@"Georgia" size:17.0f] constrainedToSize:CGSizeMake(600, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
    float newHeight = textSize.height+22.0f;
    return newHeight;
}

将以下代码添加到 cellForRowAtIndexPath

UILabel *lblfield=[[UILabel alloc] init];
NSString *fieldLabel=[NSString stringWithFormat:@"%@",labelCell.textLabel.text];
CGSize textSize = [fieldLabel sizeWithFont:[UIFont fontWithName:@"Georgia" size:17.0f] constrainedToSize:CGSizeMake(600, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
float newHeight = textSize.height+22.0f;
lblfield.frame=CGRectMake(10, 0, 600, newHeight);
lblfield.backgroundColor=[UIColor clearColor];
lblfield.text=strusername;
[cell addSubview:lblfield];
于 2013-10-29T07:10:47.960 回答
0

您正在根据内容更改标签高度。因此,您需要动态处理单元格高度或需要根据内容(字符串中的最大值)设置单元格的高度。IE

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return MAXStringHeght;
}

并尝试一次。

于 2013-10-29T07:06:57.277 回答