当文本超出空间时,使UITableViewCell扩展

时间:2010-03-27 05:03:30

标签: ios iphone uitableview text expand

我有一个UITableViewCell,它是UITableViewCellStyleDefault。当我尝试将文本放入比UITableViewCell更长的文本时,它会截断它。如何扩展单元格以适应此文本?

3 个答案:

答案 0 :(得分:2)

我没有尝试过你正在做的事情,但它可能会是这样的:

您需要根据视图中文本字符串的长度更改视图的大小。

表视图委托(您的视图控制器)应该实现

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    Message *msg = (Message *)[messages objectAtIndex:indexPath.row];
    CGSize size = [[msg text] sizeWithFont:[UIFont fontWithName:@"Helvetica" size:kLabelFontSize]
                         constrainedToSize:CGSizeMake(220.0f, 480.0f)
                             lineBreakMode:UILineBreakModeTailTruncation];
    CGFloat minHeight = 20.0f;
    CGFloat height = size.height > minHeight ? size.height : minHeight;
    return height;
}

告诉视图每行的高度。

您还需要同样调整UITableViewCell标签框架的大小。

答案 1 :(得分:1)

你不能比iphone的屏幕扩展单元格的宽度......你能做的就是 1 GT;使字体变小 2 - ;使你的文字多行

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }

    CGRect contentRect = CGRectMake(80.0, 0.0, 240, 40);
    UILabel *textView = [[UILabel alloc] initWithFrame:contentRect];

    textView.text = mytext;
    textView.numberOfLines = 2;
    textView.textColor = [UIColor grayColor];
    textView.font = [UIFont systemFontOfSize:12];
        [cell.contentView addSubview:textView];
    [textView release];

答案 2 :(得分:0)

我认为所有细胞都必须具有相同的高度和宽度。您可以使用UITableViewCells属性更改tableView's rowHeight的高度。

例如,如果您继承UITableViewController

self.tableView.rowHeight = 100;

另一种选择是添加自定义UILabel作为单元格contentView的子视图,如前所示。