我希望能够扩展/收缩 UITableView 中的所有单元格,同时保持当前位置并使更改动画高度变化。本质上,它应该看起来像当前视图中的单元格正在扩展/收缩,并且滚动位置保持不变。
我可以通过具有不同高度的 2 个状态并调用来扩展/联系单元格
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];
我试图通过这样做来保持相同的位置(不是 100% 这个计算是正确的):
//calculate the new position it should scroll to based on new cell height
CGFloat posFromTop = self.tableView.contentOffset.y;
CGFloat newDistance = 0;
if(expandedState)
{
CGFloat cellsFromTop = posFromTop / kExpandedCellHeight;
newDistance = cellsFromTop * kCollapsedCellHeight;
}
else
{
CGFloat cellsFromTop = posFromTop / kMGLCollapsedCellHeight;
newDistance = cellsFromTop * kMGLExpandedCellHeight;
}
}
//reload section
[self.tableView setContentOffset:CGPointMake(0, newDistance) animated:YES];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];
虽然这似乎是一种工作,但它不会在动画时保持位置,它会闪烁白色,因此它很不稳定,并且看起来 tableView 在重新加载期间不会保持静止。
任何人都有一种方法可以在保持相同位置的同时平滑地为所有单元格的高度设置动画?