修复表格视图单元格中的文本,ios?

Posted

技术标签:

【中文标题】修复表格视图单元格中的文本,ios?【英文标题】:Fix text in a table view cell, ios? 【发布时间】:2014-10-16 07:19:12 【问题描述】:

在我的表格视图中,我制作了一个自定义单元格,如下图所示

自定义单元格

我的问题是关于描述文本。描述文本可以包含很多行。文本长度不固定。

我怎样才能自动修复单元格的高度和描述文本,以便文本充满它..

我正在使用标签作为描述文本。而且我认为这不是一个好的选择。我还应该使用什么?

自动调整标签大小

输出

【问题讨论】:

我正在使用自定义单元格 您可以根据测试大小更改单元格的高度,并通过您实现它 【参考方案1】:

您可以获取文本大小like described here,现在更改您的描述框架UILable,并相应地更改单元格高度。您可能需要在自定义单元格中应用约束。

【讨论】:

【参考方案2】:

您可以使用打击代码根据文本高度获取单元格的高度 你必须传递一个文本及其字体大小,你会得到结果

-(CGFloat)getHeightOfText:(NSString *)text FontSize:(int)fontSize


UIFont *font = [UIFont fontWithName:@"Helvetica" size:fontSize];
NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@NSFontAttributeName: font];
CGRect rect = [attributedText boundingRectWithSize:(CGSize)300, CGFLOAT_MAX
                                           options:NSStringDrawingUsesLineFragmentOrigin
                                           context:nil];
CGSize size = rect.size;
size.height = ceilf(size.height);
size.width  = ceilf(size.width);
NSLog(@"%f",size.height);
return size.height + 50;

在那之后:

   - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

return //call above method like [self getHeightOfText:text FontSize:fontSize];
   

【讨论】:

您是否检查了 heightforRow 您的高度并在单元格中设置了标签的框架【参考方案3】:

GET THE WORKING COPY HERE

你必须为此做一些事情 第一:您必须使用

更改表格单元格的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

    NSString *text = [[arrComments objectAtIndex:indexPath.row] valueForKey:json_KEY_Comment];
    //THIS IS YOUR DESCRIPTION TEXT

    if(text)
    
        CGFloat width = 249.0;//WIDTH OF THE DESCRIPTION TEXT
        UIFont *font = [UIFont systemFontOfSize:13];//FONT OF THE DESCRIPTION TEXT
        NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@NSFontAttributeName: font];
        CGRect rect = [attributedText boundingRectWithSize:(CGSize)width, CGFLOAT_MAX
                                                   options:NSStringDrawingUsesLineFragmentOrigin
                                                   context:nil];
        CGSize size = rect.size;
        size.height = ceilf(size.height);
        size.width  = ceilf(size.width);
        return size.height + 40;//HERE size.height IS THE HEIGHT OF THE DESCRIPTION TEXT AND 40 IS 
                                //HEADER TEXT AND IMAGE HEIGHT AND THE PADDING YOU WANT

    
    else
    
        return [tableView rowHeight];
    

第二:将描述文本的行号设置为0,这样它就会自动取所需的行数

第三:设置描述文本的自动调整大小

所以当单元格高度改变时它会自动增加它的高度[注意:如果标签在单元格内容视图的另一个视图中,则标签的父级也应该将自动调整大小设置为此] 谢谢你

【讨论】:

它不工作。我得到了一个巨大的表格单元格高度。在描述文本之后,第一个和第二个单元格之间有巨大的空白,依此类推 能否添加截图 您好,请检查 SS 我想问题是虽然单元格高度增加了,但标签高度没有增加 您是否在代码中提供了正确的字体([UIFont systemFontOfSize:13];)

以上是关于修复表格视图单元格中的文本,ios?的主要内容,如果未能解决你的问题,请参考以下文章

如何在编辑表格视图单元格中的文本字段时重新加载所有表格视图单元格 - iOS Swift

iOS:自定义表格视图单元格中的约束

自定义表格视图单元格中的 UITextField。点击单元格/文本字段时显示选择器视图

表格视图单元格中的文本字段

iOS:如何从 tableview 的自定义单元格中的 UITextField 访问值

自定义表格视图单元格中的可编辑文本字段