UITableViewRowAnimationNone - 表现为UITableViewRowAnimation(上/下)

时间:2015-03-10 01:41:53

标签: ios uitableview uiview caanimation

我已使用以下代码设置行插入。我在插入和删除行时只使用UITableViewRowAnimationNone,但有时,正如您在下面的gif中看到的那样,该行从顶部或底部开始动画。在大多数情况下,它并不像我想要的那样动画,但有时它会在插入和删除时动画。我不是在谈论扩展显示插入单元格的表格视图,我的意思是单元格似乎从底部或顶部滑入。

enter image description here

以下是控制插入动画的方法:

- (void)contentHeaderFooterView:(NFContentHeaderFooterView *)headerFooterView sectionOpened:(NSInteger)section{

    NSIndexPath *pathToAdd = [NSIndexPath indexPathForRow:0 inSection:section];

    [self.tableView beginUpdates];
    [self.tableView insertRowsAtIndexPaths:@[pathToAdd] withRowAnimation:UITableViewRowAnimationNone];
    [self.tableView endUpdates];

}

这是控制删除动画的方法。

- (void)contentHeaderFooterView:(NFContentHeaderFooterView *)headerFooterView sectionClosed:(NSInteger)section{

    NSIndexPath *pathToDelete = [NSIndexPath indexPathForRow:0 inSection:section];

    [self.tableView beginUpdates];
    [self.tableView deleteRowsAtIndexPaths:@[pathToDelete] withRowAnimation:UITableViewRowAnimationNone];
    [self.tableView endUpdates];

}

2 个答案:

答案 0 :(得分:0)

我有类似的问题,表更新没有执行我直接给它的动画。我无法确定为什么,但我可以建议的一件事是,不是在begin / endUpdates之间进行特定的行删除,你只需要一个硬的reloadData。

答案 1 :(得分:0)

在这里回答:https://stackoverflow.com/a/37352789/577237

重新发布,因为它很简短:

[UIView performWithoutAnimation:^{
                    [self.tableView beginUpdates];
                    [self.tableView deleteRowsAtIndexPaths:rowsToRemove withRowAnimation:UITableViewRowAnimationNone];
                    [self.tableView endUpdates];
                }];

请注意,这是iOS 7.0 +