【问题标题】:iPhone - Smooth animation for UITableViewCell height change including content update [duplicate]iPhone - UITableViewCell 高度变化的平滑动画,包括内容更新[重复]
【发布时间】:2011-06-30 03:54:57
【问题描述】:

可能重复:
Can you animate a height change on a UITableViewCell when selected?

我有一个表格视图,您可以在其中单击切换到一个单元格,表格视图的许多单元格可能会改变它们的高度。计算哪些单元格会改变它们的大小有点复杂,所以我不想调用两次相同的代码。

我有一个heightForRowAtIndexPath 方法(这个方法很复杂)。

有没有一种方法可以在不影响不变的情况下为单元格增长或减少特征设置动画?

我已经尝试过UIView Animations,reloadData 用于动画部分,......但我没有发现任何流畅的东西。 我试图捕捉每个必须更改的单元格,并在每个单元格上调用带有动画的 reloadData。它在工作附近,但单元格一个接一个地更新。正如我之前所说,我不想这样做,因为我必须调用两次 heightForRowAtIndexPath 方法。

我想要的是可以为每个高度变化的单元格设置动画,例如增加或减少运动,而不是渐变。

你知道怎么做吗? 还有一件事,当尺寸改变时,单元格的内容会发生一些变化(添加一些文本,改变背景颜色等等)

【问题讨论】:

    标签: iphone uitableview animation resize


    【解决方案1】:

    UITableView 有一个巧妙的技巧来动画单元格高度的变化:如果你向表格视图发送一个空的更新块,它不会插入或删除任何单元格,但它仍然会重新计算整个表格的单元格高度。所以即使这段代码看起来很奇怪,它也应该这样做:

    [tableView beginUpdates];
    [tableView endUpdates];
    

    如果您也想更改更新单元格的内容,当然,您必须在更新块中添加一个或多个对reloadRowsAtIndexPaths:withRowAnimation: 的调用。

    【讨论】:

    • 就可以了。你能给我一点最后的帮助吗?我想更新所有部分,所以我试图调用 reloadSections:withRowAnimation。但我不习惯使用 NSIndexSet。我将如何构建该调用中的部分列表?在某处确定 numberOfSectionsInTableView ,但我该如何构造 indexSet ?
    • 假设您要更新第 0 节和第 3 节:NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet]; [indexSet addIndex:0]; [indexSet addIndex:3];。有关更多信息,请参阅文档。
    • 这行得通,谢谢,但是当我更改单元格的背景颜色时,会出现图形伪影。有没有办法仅在调整大小动画结束时更新单元格的内容?
    • 似乎在 iOS 10 上被破坏了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 2019-01-16
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多