UITableView ReloadData Animate Cell UI

时间:2015-07-21 18:48:18

标签: ios objective-c uitableview uiviewanimation

在我的tableview中,当tableview重新加载其数据时,我需要为每个单元格的UI设置动画。

这需要自定义动画,而不仅仅是淡入淡出或默认过渡。

例如,当点击“编辑”按钮时,在我的视图中,tableview会重新加载,每个单元格都会为这种新的编辑模式更新其UI。

但是,在重新加载期间,我尝试使用UIView动画块来更新单元格中UILabel的约束,但它不会设置动画。

这是我在tableview上调用reloadData时运行的代码。这在cellForRowAtIndexPath方法中调用。

[UIView animateWithDuration:0.3f delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^
    {
        //does not animate
        _lblContainerLeftConstraint.constant = 18;
        [self setNeedsLayout];

        //does animate
        _reorderIcon.alpha = 0.5f;

    } completion:nil];

1 个答案:

答案 0 :(得分:0)

我认为你需要在willDisplayCell而不是cellForRowAtIndexPath中执行此操作,因为在显示之前调用它会尽可能接近实际显示在屏幕上的点。

然后在动画块之前设置新约束值,并调用[cell.contentView setNeedsLayout]以指示单元格内容需要布局。

最后只在动画块中添加[cell.contentView layoutIfNeeded]和你的alpha变化,这应该会改变你的时间段内约束变化的动画。