是否有在 UITableViewCell 子视图中为帧更改设置动画的最佳实践,但不重新加载单元格(通过reloadData
或通过重新加载特定单元格和部分)。
示例:我有一个简单UIView
的自定义子视图UITableViewCell
,其中子视图占总行宽的百分比。我想对这个宽度的变化进行动画处理UIView
(而容器视图 UITableViewCell 内容视图保持不变),但不重新加载,因为重新加载动画选项不会显示子视图的框架平滑地改变大小我想要。
我最初的解决方案是遍历可见单元格,并使用UIView
动画块手动更改每一帧,例如
for (CustomCell *cell in [self.tableView visibleCells]])
{
CGRect newFrame = CGRectMake(0.0,0.0,10.0,0.0); // different frame width
[UIView animateWithDuration:0.5 animations:^{
cell.block.frame = updatedFrame; // where block is the custom subview
}];
}
但是虽然这似乎在 iOS7 上有效,但在 iOS6 上导致了一些时髦且难以解决的图形扭结;遍历所有单元格似乎过大了。
任何建议最好的方法来做到这一点?