4

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;
    }
}
4

1 に答える 1

2

willDisplayCell が呼び出されたときに、セルがまだ画面外にあり、アニメーションを作成できないためだと思います。

于 2012-07-05T03:50:55.393 に答える