淡入淡出动画的UITableViewCell

5
我有一个UITableViewController,用于展示从网络上获取的一些数据。每个单元格的数据还包括一个作为背景的图片,我使用一个独立的NSOperation进行下载,并将其添加到一个设置了MaxConcurrentOperationCount为4的NSOperationQueue中。在图片未下载完成时,我会显示一个通用的占位符,我想要在成功下载后(淡出/淡入)用已下载的图片替换它。
我在UITableViewController的cellForRowAtIndexPath中使用以下代码。
[UIView beginAnimations:@"fade" context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:3.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
cell.placeholderUIImage.alpha = 0.0;
cell.backgroundUIImage.alpha = 1.0;
[UIView commitAnimations];

很不幸,这只对几行随机起作用,因为对于大多数行,背景图像会立即设置,就好像动画开始时的一个单元格会被下一个 beginAnimations 的调用“覆盖”。

1个回答

7

UITableView内置了支持带有淡入淡出动画重新加载行的功能,只需调用[tableView reloadRowsAtIndexPaths:... withRowAnimation:UITableViewRowAnimationFade],并确保您的cellForRowAtIndexPath不返回已经在表格中的UITableViewCell实例即可。


似乎必须在tableview布局完成后调用。 - shiami

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接