Ios UITableViewCell子视图动画计时怪异

Ios UITableViewCell子视图动画计时怪异,ios,uitableview,uiviewanimation,Ios,Uitableview,Uiviewanimation,我正在尝试在UITableViewCell中启动动画,但除非我做一些愚蠢的事情,否则它不会启动。代码正在被调用,但动画没有按原样执行任何操作。如果我通过将它放入调度\u async中来延迟它,那么它将工作。为什么会发生这种情况?我需要等待什么才能开始动画 - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexP

我正在尝试在UITableViewCell中启动动画,但除非我做一些愚蠢的事情,否则它不会启动。代码正在被调用,但动画没有按原样执行任何操作。如果我通过将它放入
调度\u async
中来延迟它,那么它将工作。为什么会发生这种情况?我需要等待什么才能开始动画

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(mNeedsAnimation)
    {
    //this will delay it a bit and make it work, but why?
    //dispatch_async(dispatch_get_main_queue(), ^(void){ (
        mViewToAnimate.transform = CGAffineTransformMakeScale(0.5f, 0.5f);
        mViewToAnimate.hidden = NO;
        mViewToAnimate.alpha = 1.f;

        [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionRepeat|UIViewAnimationCurveLinear animations:^{
            mViewToAnimate.alpha = 0.0;
            mViewToAnimate.transform = CGAffineTransformMakeScale(1.f, 1.f);
        }completion:nil];
    //});
        mNeedsAnimation = NO;
    }
}

我认为这是因为当willDisplayCell被调用时,该单元格仍然在屏幕外,无法播放动画

我是这样想的……但如果是这样的话,那么这段代码就太脆弱了。你知道有什么东西会提醒我这个单元已经在屏幕上,可以接收动画了吗?也许是mViewToAnimate.Superview有趣的理论,我会在有时间的时候测试一下+1但是现在,客户的请求完全改变了,所以我不再需要这样做,但是从一些有限的测试来看,似乎可以在
didmovetoserview
中启动动画,所以我认为这个答案是正确的。