【问题标题】:Table cell label not wrapping last line in iOS7表格单元格标签未在 iOS7 中换行最后一行
【发布时间】:2013-11-08 05:24:42
【问题描述】:

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

我的问题是我的单元格标签在换行后没有显示最后一行意味着如果我的标签总共有三行,那么标签只显示两行。该代码在 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;

【问题讨论】:

  • 只需在单元格中获取动态UILabel并设置它的文本,高度和行数。
  • 您在哪里设置该标签的文本?
  • 其实我在使用 labelcell 下的 sensible tableview。

标签: ios uitableview ios7


【解决方案1】:

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

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

return labelHeight + 2 * kTopAndBottomPadding;

到:

return labelHeight + 2 * kTopAndBottomPadding + 2.f;

【讨论】:

    【解决方案2】:

    使用这个方法:

    - (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];
    

    【讨论】:

    • sizeWithFont:... 在 ios7 中已弃用,所以这个答案不能解决他的问题...
    • @Mr.T 使用 -boundingRectWithSize:options:attributes:context: 用于 iOS 7。
    【解决方案3】:

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

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

    并尝试一次。

    【讨论】:

    • 嘿,谢谢您的回复,但这不是高度的问题,因为即使我将高度设置为 100,它也只是增加了单元格的高度,但在换行后不显示最后一行标签。
    猜你喜欢
    • 2013-10-02
    • 2021-10-20
    • 2022-12-14
    • 2019-03-20
    • 1970-01-01
    • 2013-03-06
    • 2017-10-07
    • 2014-02-20
    • 2013-10-19
    相关资源
    最近更新 更多