自动确定 UITableViewCell 的大小

Posted

技术标签:

【中文标题】自动确定 UITableViewCell 的大小【英文标题】:Automatically determining the size of a UITableViewCell 【发布时间】:2010-04-04 22:02:49 【问题描述】:

我正在尝试确定 UITableCellView 的大小。原因是我将一个类用于不同的方向和设备。

该单元格包含一个应该填满整个单元格的子视图。知道我在UITableViewCellinit 方法中这样做:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
     //iPad
     subv = [[OrbitView alloc] initWithFrame:CGRectMake(52, 5, 660, 420) ];
else
     //iPhone
     subv = [[OrbitView alloc] initWithFrame:CGRectMake(15, 5, 290, 200) ];

显然,必须有更好的方法来做到这一点,而不需要神奇的数字。我应该如何/在哪里设置 UITableViewCell 中子视图的框架,以使其填充整个 UITableViewCell?

【问题讨论】:

【参考方案1】:

使用单元格将进入的表格视图的尺寸。将 autoresizingMask 设置为灵活宽度以处理旋转和辅助视图。此代码假定您已设置表格的 rowHeight,但您可以使用屏幕高度的一小部分而不是测试设备类型。

-(CGRect) cellFrameForTableView:(UITableView *)inTable 
  CGRect result = [inTable frame];

  result.origin = CGPointZero;
  result.size.height = [inTable rowHeight];

  return result;

如果您希望自动调整视图大小以为单元格额外内容(如附件视图)留出空间,请将您的自定义视图添加到单元格内容,而不是单元格。在这种情况下,诸如编辑控件之类的东西会随着内容视图一起调整您的自定义视图。

过去我在单元格中使用灵活的高度视图时遇到了麻烦,所以我会使用灵活的底部边距。

【讨论】:

以上是关于自动确定 UITableViewCell 的大小的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableViewCell 中自动调整 UITextField 的大小

如何让 UITableView 行高自动调整为 UITableViewCell 的大小?

自动调整子类 UITableViewCell 子视图的大小

自动调整 uitableviewcell 的大小 - SWIFT

在 UITableViewCell 中自动调整 UILabel 的大小

自动调整 UITableViewCell 大小:无法同时满足约束