添加子视图后,UITableViewCell contentView 框架大小会自动增加吗
Posted
技术标签:
【中文标题】添加子视图后,UITableViewCell contentView 框架大小会自动增加吗【英文标题】:does a UITableViewCell contentView frame size increase automatically after adding subviews 【发布时间】:2011-03-14 20:47:06 【问题描述】:?
假设你:
向 UITableViewCell 内容视图添加一些子视图(例如 UILabel) 然后使用 label.frame = CGRectMake(... 方法设置 UILabel 大小/位置 那么 UITableViewCell 的框架大小是否会自动更改以适应这一点 - 即,如果您使用 tableViewCell.contentView.frame.size.height,这应该是恰好适合子视图所需的总高度吗?【问题讨论】:
【参考方案1】:我不这么认为......这似乎真的不合逻辑。您可以通过 UITableView 属性 rowHeight 或通过实现 UITableViewDelegate 方法为单元格设置框架高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
【讨论】:
有趣的是,我试图确定该行的高度是在 heightForRowAtIndexPath 内。所以建议的方法是通过使用 cellForRowAtIndexPath 创建一个临时单元格,然后测量它的尺寸。然而这里的问题是 UITableViewCell 的整体尺寸似乎并没有反映/调整到其中的子视图呢?所以这意味着我必须手动查看所有子视图(例如 UILabels)并手动确定总高度是多少? 嗨! heightForRowAtIndexPath 实际上是在 cellForRowAtIndexPath 之前调用的,因此我建议您预先计算所有行高,并将它们作为属性存储在您试图用表格单元格描述的对象中。然后在 heightForRowAtIndexPath 询问特定单元格的行应该多高时使用这些值。以上是关于添加子视图后,UITableViewCell contentView 框架大小会自动增加吗的主要内容,如果未能解决你的问题,请参考以下文章
将大于 cellHeight 的子视图添加到 UITableViewCell?
为啥我必须删除为 UITableViewCell 添加的子视图,而不是在 UITableViewCell 的子类中?
如何将 UITableviewcell 子视图添加为 uiscrollview