自定义 TableViewCell 中的标签不能是多行或换行

Posted

技术标签:

【中文标题】自定义 TableViewCell 中的标签不能是多行或换行【英文标题】:Label in Custom TableViewCell can't be multiline or wrap 【发布时间】:2013-03-26 10:36:55 【问题描述】:

我尝试将自定义 tableViewCell 类中的单元格设置为多行并换行。 我在这里阅读了我的问答并按照说明进行操作,但仍然找不到解决方案。

我可以调整每个内容长度的动态高度,但仍然无法使 这是我的代码

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

   CustomItemCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomItemCell"];
   if(cell == nil)
      cell = [[CustomItemCell alloc] initWithStyle:UITableViewCellStyleDefault   reuseIdentifier:@"CustomItemCell"];

      //I set lineBreakMode of cell.postLabel to NSLineBreakByWordWrapping 
      // and set numberofLines = 0 ; 
      cell.postLabel.lineBreakMode = NSLineBreakByWordWrapping;
      cell.postLabel.numberOfLines = 0;
    
    CustomItem *item = [[channel items] objectAtIndex:[indexPath row]];
   //postLabel is the label that I want to be multiline and wordwrap  
   // postLabel get an NSString from [item post] 
   [[cell postLabel] setText:[item post]];

   [[cell timeLabel] setText:[item time]];
   [[cell distanceLabel] setText:[item distance]];
   [[cell thumbnailView] setImage:[item thumbnail]];

   return cell;

我创建了CustomItemCell.xib 文件。实际上,我还在界面生成器中将行设置为零并将换行符设置为自动换行,但它没有像我预期的那样显示。

【问题讨论】:

如果您根据其内容设置标签高度,则标签可以是多行并换行 如果postLabel 有问题,最简单的尝试方法是在设置文本后致电[[cell postLabel] sizeToFit]。还要小心将postLabel 添加到单元格的contentView 高度已经设置,但没有任何改变。 Marko,我在 CustomItemCell.xib 中设置了我的单元格。我是否必须再次将其添加到内容视图中? 【参考方案1】:

试试这个,

[cell.postLabel sizeToFit];

【讨论】:

已经试过了。但是没有用......我把它放在下面 [[cell postLabel] setText:[item post]];行。 我发现了问题。界面构建器启用了“使用自动布局”。我禁用了这个选项,sizeToFit 完美运行【参考方案2】:

为多行设置单元格样式如下图,

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];

检查一下..

【讨论】:

以上是关于自定义 TableViewCell 中的标签不能是多行或换行的主要内容,如果未能解决你的问题,请参考以下文章

自定义 TableViewCell 中忽略自动布局

标签显示超出我的自定义 TableViewCell 范围并通过 swift 设置自动布局

无法计算 tableViewCell 标签值

自定义tableviewcell中的文本字段在滚动时离开单元格

使用包装标签增加 TableViewCell 高度

单击按钮时将默认 TableViewCell 更改为自定义子类