gpt4 book ai didi

ios - 在保持滚动位置的同时动画所有 UITableViewCells 的高度变化

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:11:28 27 4
gpt4 key购买 nike

我希望能够扩展/收缩 UITableView 中的所有单元格,同时保持当前位置并让更改为高度变化设置动画。从本质上讲,它应该看起来像当前 View 中的单元格正在扩展/收缩并且滚动位置保持不变。

我能够通过具有不同高度的 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 在重新加载期间保持静止。

谁有办法在保持相同位置的同时平滑地设置所有单元格高度的动画?

最佳答案

尝试替换

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation: UITableViewRowAnimationAutomatic];

[self.tableView beginUpdates];
[self.tableView endUpdates];

后者将获取当前单元格并更新它们的大小。使用自动动画重新加载部分可能会使用淡入淡出动画,该动画会在新高度生成新单元格并在现有单元格和新单元格之间淡入淡出,这可能不是您想要的。

关于ios - 在保持滚动位置的同时动画所有 UITableViewCells 的高度变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18370049/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com