UITableview 单元格子视图的高度比单元格大

Posted

技术标签:

【中文标题】UITableview 单元格子视图的高度比单元格大【英文标题】:UITableview cell subview larger height then cell 【发布时间】:2013-08-19 21:23:12 【问题描述】:

@大家好

我有一个非常有趣的问题。 实际上我有子视图,其高度可以大于单元格高度本身(它是我的设计所必需的)。例如,单元格“A”的高度为 40,而子视图的高度为 70。

我可以显示更大的子视图,但是当单元格 A 离开屏幕(我滚动到顶部)时,它的子视图也会消失(明显)结果。但这会产生不希望的效果,因为较大的子视图之前扩展到单元格,容器单元格下方的“B”突然消失。

我尝试在 willDisplayCell 委托方法中将单元格背景设置为透明,但没有成功。

如果有人想看,下面是我的相关方法

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

static NSString *MyIdentifier = @"MyIdentifier";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];

if (cell == nil)

    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                   reuseIdentifier:MyIdentifier] autorelease];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;


NSArray *newArray = [[dataDictionary allKeys] sortedArrayUsingSelector: @selector(compare:)];

[cell.contentView addSubview: [[[dataDictionary objectForKey:[newArray objectAtIndex:indexPath.section]] objectForKey:@"DayView"] objectAtIndex:indexPath.row]];

return cell;

如果我不是很清楚,请原谅我,但这是最好的,我可以解释我的情况。

我想显示像 http://postimg.org/image/e5ok5hybl/ 图像这样的视图。

【问题讨论】:

【参考方案1】:

如果你必须这样做,你可以使用一个简单的技巧:

    将表格的 y 原点移动到一个负值,该负值等于您的视图在单元格下方的延伸量,例如原点 -30 像素。 将表格高度提高相同的量,即提高 30 像素。 将表格的顶部内容插入增加相同的量,即增加 30px。

您实际上所做的是在屏幕外扩展表格视图,同时保持单元格的原始位置。由于表格视图延伸到屏幕外,因此单元格将不会出列,直到单元格下方延伸的部分滚动到屏幕外。

这是一个 sample project 演示技巧。

【讨论】:

嗨,伙计,您的解决方案似乎很好,但我以前不知道子视图的高度。实际上我正在尝试制作日历应用程序,我将把 dayview 放在顶部单元格上。所以每一天都可以包含延长这一天的事件。我实时了解事件高度。 您可以添加任意数量的填充。所以想出一个最大高度并使用它。 当然,这种方式违背了使用表格视图的目的(有效回收单元格)。但是,嘿,如果它有效。否则,请考虑使用自定义布局或普通滚动视图的集合视图。 嘿,伙计,我尝试了 scrollView,我认为它是合适的。我已经问过另一个问题,因为好像我们向上滚动查看前一天视图然后***.com/questions/18317711/… 与此相关。如果你能看到它,我将不胜感激。

以上是关于UITableview 单元格子视图的高度比单元格大的主要内容,如果未能解决你的问题,请参考以下文章

UITableview 单元格高度在 iOS 14.0 中的滚动表视图上发生变化

UITableview 高度根据单元格设置

重新加载单元格高度变化的单元格时,UITableView 滚动到顶部

表格视图单元格高度动态 + 从 .xib 加载

当单元格高度为动态时设置 UITableView 的高度

UITableView中的UICollectionView。如何在集合视图变高时告诉tableview单元格改变高度?