表单元格标签未包装iOS7中的最后一行

时间:2013-10-29 07:04:09

标签: ios uitableview ios7

我的应用程序中出现了非常奇怪的问题。我正在动态创建表视图单元格。并根据内容调整细胞标签的高度。我的问题是我的单元格标签在包装后没有显示最后一行意味着如果我的标签总共有三行,那么标签只显示两行。代码在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;

3 个答案:

答案 0 :(得分: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];

答案 1 :(得分:1)

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

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

return labelHeight + 2 * kTopAndBottomPadding;

为:

return labelHeight + 2 * kTopAndBottomPadding + 2.f;

答案 2 :(得分:0)

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

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

并尝试一次。