【发布时间】:2011-05-18 01:52:46
【问题描述】:
我有一张表格,上面有阴影,下面有阴影(在此处使用 Matt Gallagher 的解决方案:http://cocoawithlove.com/2009/08/adding-shadow-effects-to-uitableview.html)。这些是在 UITableView 类扩展的 layoutSubviews 方法中添加的。
我在每个主单元格下方动态添加和删除单元格(这些单元格提供了额外的数据)——我们将这些单元格称为“细节”单元格。一次只有一个开放。当删除最后一个主单元格下方的“细节单元格”时,随着动画的开始,阴影向上滑动到最后一个单元格(细节单元格上方)。这样做是因为 layoutSubview 方法认为表格的最后一个单元格在 deleteRowsAtIndexPaths 的动画开始时(而不是动画结束时)发生了变化。
所以,从本质上讲,我需要一种方法来保持细节单元格下方的阴影被删除。不确定执行此操作的最佳方法。如果 UITableView 不再认为该单元格是最后一个单元格,那么我什至不确定如何获取该单元格(因为 UITableView 获取了该单元格):
NSIndexPath *lastRow = [indexPathsForVisibleRows lastObject];
if ([lastRow section] == [self numberOfSections] - 1 &&
[lastRow row] == [self numberOfRowsInSection:[lastRow section]] - 1)
{
//adds shadow below it here
}
因此,如果 UITableView 仍然认为“详细”单元格上方的主单元格是“lastObject”,那么即使捕获动画的开始也没有多大用处。
感谢您的任何想法。
【问题讨论】:
-
您是否尝试将顶部和底部阴影分别添加为
tableHeaderView和tableFooterView?当表格在删除动画后调整大小时,这些视图肯定会保持原位并适当移动。
标签: uitableview animation delete-row