在不滚动的情况下对 UITableViewCell 的高度变化进行动画处理

2024-05-04

我知道如何使用此处所示的方法对 UITableViewCell 的高度变化进行动画处理:当 UITableViewCell 被选中时,你能用动画来改变高度吗? https://stackoverflow.com/questions/460014/can-you-animate-a-height-change-on-a-uitableviewcell-when-selected

但是,使用该方法, UITableView 将同时滚动,我不希望它这样做。

我有一个 UITableView,单元格很少;它占用的高度小于屏幕高度。底部单元格有一个 UITextField,当它开始编辑时,我手动设置 UITableView 的内容偏移量,以便具有 UITextField 的单元格滚动到顶部。然后,根据 UITextField 中的输入,我可能想要增加 UITableViewCell 的大小以或多或少地显示额外的选项。

问题是,当对此更改进行动画处理时,它将重新定位 UITableView,以便我的 UITextField 不再位于顶部。

这或多或少就是我正在做的事情:

self.customAmountCellSize = height;

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

我也尝试过

self.customAmountCellSize = height;
CGPoint originalOffset = self.tableView.contentOffset;

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

[self.tableView setContentOffset:originalOffset animated:NO];

我想要行高动画,我不希望 UITableView 滚动。

有任何想法吗?


您遇到的问题似乎是您的表格视图滚动到底部,因此当您更新其内容时,它会尝试修复该问题。

您可以采取两种方法来防止滚动:

  1. 将表视图的内容插入设置为初始空白的高度:

    self.tableView.contentInset = UIEdgeInsetsMake(0, 0, verticalGap, 0);
    
  2. 添加一个与垂直间隙高度相同的空页脚视图:

    self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, verticalGap)];
    

在这两种情况下,您都需要计算您想要达到的垂直空间。然后您需要恢复contentInset or tableFooterView完成后恢复到原来的状态。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在不滚动的情况下对 UITableViewCell 的高度变化进行动画处理 的相关文章

随机推荐