如何在uitableview上制作固定高度的单元格?

Posted

技术标签:

【中文标题】如何在uitableview上制作固定高度的单元格?【英文标题】:How to make fixed height cell on uitableview? 【发布时间】:2015-05-07 06:31:45 【问题描述】:

所以我想制作像 instagram 这样的时间线内容,我在我的 uitableview 上使用自定义单元格。我的问题是我已经在情节提要上将单元格高度设置为 345,但得到的单元格表如下所示:

这是我在故事板上的自定义单元格:

我该如何解决它,这样我才能得到故事板上的结果?

【问题讨论】:

来自 IB 的标记自定义高度选项。并从表格视图属性中设置单元格高度。 我也告诉过你娜塔莎在回答中发布的同样的事情。 【参考方案1】:

您遇到此问题的原因是您可能已将自定义 tableview 单元格的行高设置为 345,但在 UITableview 的行高小于 345 时未设置为自定义。所以,您需要做的是到情节提要并选择表格(UITableview)并将其行高设置为最大可能的行高。

假设您将有两种不同的行高。一个为 345,另一个为 325。作为 325

现在,选择自定义表格视图单元格并将其行高设置为自定义,并将其设置为 345 或 325。在您的情况下,它将是 345。

现在应该好了。

但是,当您有不同的单元格大小时,更合适的方法是使用委托方法来指定行高。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
   if(indexPath.row==0)
      return 345;
   
   else if(indexPath.row==1)
      return 325;
   
   else
      return 300; //a default size if the cell index path is anything other than the 1st or second row.
   

【讨论】:

【参考方案2】:

使用这个delegate 方法:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
    return 345

【讨论】:

【参考方案3】:

在你的 UITableViewController 子类中,设置self.tableView.rowHeight = 345。可能是故事板高度未翻译的错误。

【讨论】:

@EgaSetyaPutra self.tableView?.rowHeight = 345 可能你还没有为你的tableview创建一个IBOutlet。上面的代码只有在你有一个连接到 UITableview 并命名为 tableview 的插座时才应该工作。然后在您的 viewdidload 中,您可以使用 self.tableView.rowHeight 访问 rowHeight。【参考方案4】:

您可以在此处设置表格视图单元格的高度。

【讨论】:

@EgaSetyaPutra 从情节提要中选择 Tableview。并设置行高。

以上是关于如何在uitableview上制作固定高度的单元格?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局动态调整具有固定宽度的collectionview单元格高度?

使用 UITableView 的可变高度自定义单元格调用 reloadData 时保持 UITableView 的当前位置

如何在没有重载数据的情况下更改uitableview中的高度单元格

如何在iOS中的表视图底部创建固定单元格?

如何滚动到 UITableView 底部以查看所有单元格内容而不调整单元格高度?

使用固定的“标题”在 UITableView 上滚动单元格