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

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

自定义单元格

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

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

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

自动调整标签大小

输出

【问题讨论】:

  • 我正在使用自定义单元格
  • 您可以根据测试大小更改单元格的高度,并通过您实现它

标签: ios uitableview uilabel


【解决方案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];)
    猜你喜欢
    • 2015-03-07
    • 2018-08-19
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多