ios – UITableViewCell子视图动画计时怪异

我试图在UITableViewCell内部启动动画,但除非我做一些愚蠢的事情,否则它不会启动.代码被调用,但动画不做任何事情.如果我通过将它放在dispatch_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时,单元格仍在屏幕外,无法动画.

点赞