UITableViewCell在第一次动画不正确

时间:2014-04-15 12:09:28

标签: ios animation uitableview core-animation

当取消选择aTableView上的单元格时,我实际上将在bTableView上删除一个单元格。而且,我使用UIViewController代替UITableViewController只是因为我的应用上有很多东西,而且我确实已经采用了UITableViewDelegateUITableViewDataSource

    - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
            if (tableView == bTableView) { ......
            MyCustomCell *cell = (MyCustomCell *)[aTableView cellForRowAtIndexPath:indexPath];
            [convertResultTableView beginUpdates];
            // some data updates stuff..

            [UIView beginAnimations:@"quitRotation" context:NULL];
            CATransform3D rotation;
            rotation = CATransform3DMakeRotation((70.0 * M_PI) / 180, 0.0, 0.0, 1.0);
            cell.layer.transform = rotation;
            cell.layer.anchorPoint = CGPointMake(-1, 0.5);
            cell.alpha = 0;
            cell.layer.shadowOffset = CGSizeMake(0, 0);
            [UIView commitAnimations];
            [convertResultTableView endUpdates];

问题是细胞只有在第二次,第三次,第四次动画时动画才有效,但不是第一次。 (这意味着它出现,消失,出现并消失< - 这次)

它仍然会做一些动画,但它不像我预期的那样,并且在错误的动画和正确的动画之间有很多不同。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

真的是一个愚蠢的错误!

这是我的错误: 我的aTableView会在第一次显示时做一些动画,但是我的代码有一些愚蠢的错误,所以只有我aTableView的第一行单元格做了动画,因此,cell.layer.position会有所不同。然而,在它消失并再次出现之后,cell.layer.position都会转到正确的位置,因为代码是正确的,所以当它是第2,第3 ......时间时它会起作用。

我是如何发现错误的:我只是NSLog(...);基本上记录了cell.layer的所有属性,因为我真的是CoreAnimation的新手,幸运的是,我的首先尝试的是cell.layer.position,我立即发现了错误。