代码之家  ›  专栏  ›  技术社区  ›  agentfll

当文本超出空间时使uitableviewcell展开

  •  2
  • agentfll  · 技术社区  · 14 年前

    我有一个 UITableViewCell 而且它是 UITableViewCellStyleDefault . 当我试图把文字放得比 uiTableViewCell ,它会截断它。如何使单元格扩展以容纳此文本?

    3 回复  |  直到 8 年前
        1
  •  1
  •   Mihir Mehta    14 年前

    你不能扩展手机的宽度超过iPhone的屏幕…你能做的就是 1>缩小字体 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
  •  2
  •   Jason G    14 年前

    我还没有试着做你想做的事,但可能会这样:

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

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

    - (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标签的框架大小。

        3
  •  0
  •   jkeesh    14 年前

    我认为所有的细胞都需要同样的高度和宽度。您可以更改 UITableViewCells 使用 tableView's rowHeight 财产。

    例如,如果您将 UITableViewController

    self.tableView.rowHeight = 100;

    另一个选项是添加自定义 UILabel 作为单元格内容视图的子视图,如前所示。