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

时间:2014-10-16 07:19:12

标签: ios uitableview uilabel

在我的表格视图中,我已将自定义单元格设为如下图像

自定义单元格

Custom Cell

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

如何自动修复单元格的高度和描述文本,以便文本显示在其中..

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

自动调整LAbel大小

Label Resize

输出

OUTPUT

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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,这样它将自动获取所需行号Screen Shot

第三步:设置THE DESCRIPTION TEXT的自动调整大小

to this

因此当单元格高度发生变化时它将自动增加其高度[注意:如果标签位于单元格内容视图中的另一个视图中,则标签的父级也应该将自动调整设置为此] 谢谢

答案 2 :(得分:0)

您可以使用吹码来获取文本高度的单元格高度 你必须传递一个文本及其字体大小,你将得到结果

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