UITableViewCell对象在首次渲染时被错放

时间:2014-08-25 11:40:40

标签: ios iphone uitableview animation

许多人可能已经注意到,有时当UITableView更改高度并因此显示新行时,这些行的内容会放错位置(例如,当它们都位于行的中心或行的最左侧部分时)或者等等)当行显示时,它们立即(动画地)移动到它们正确的原始位置。任何人都可以告诉我如何禁用这种动画?

谢谢


P.S:我知道我的描述不太清楚,所以我录制了一段视频来说明正在发生的事情,可以从this link进行访问。 (链接更新)

P.P.S:这也可以在ViberWhatsapp等其他消息传递应用中看到。我已经从ViberWhatsapp录制了相同效果的视频,但必须有一个解决方案来禁用它,这显然是Line所做的。

1 个答案:

答案 0 :(得分:0)

这个对我有用。当行数据到来时,第一次显示动画。

//这个函数是所有魔法发生的地方 - 在rowForCellAtIndexPath旁边调用

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
if(![arrObjectsDone containsObject:[NSString stringWithFormat:@"%d",indexPath.row]])
{
    cell.frame = CGRectMake(640, cell.frame.origin.y, cell.frame.size.width, cell.frame.size.height);
    [arrObjectsDone addObject:[NSString stringWithFormat:@"%d",indexPath.row]];
}
    [UIView beginAnimations:@"rotation" context:NULL];
    [UIView setAnimationDuration:1.0];
    cell.frame = CGRectMake(0, cell.frame.origin.y, cell.frame.size.width, cell.frame.size.height);
    [UIView commitAnimations];   
}