1
// Animate moving the cards into position
    [UIView animateWithDuration:0.5
                          delay:0.0
                        options:UIViewAnimationOptionCurveLinear
                     animations: ^{ card.frame = cardFrame; }
                     completion: ^ (BOOL finished) {
                         if (finished) {
                             [UIView animateWithDuration:1.0
                                                   delay:3.0
                                                 options:UIViewAnimationOptionTransitionFlipFromRight
                                              animations: ^ { card.image = [UIImage imageNamed:@"imgBack.png"]; }
                                              completion:NULL];
             }
                     }];

由于某种原因,第二次延迟不会延迟。动画立即继续有什么帮助吗?

4

1 回答 1

2

您遇到的问题实际上与嵌套无关。UIImageView根本无法为setImage:属性设置动画,因此代码一到达就会执行。

如果您可以简单地延迟设置图像属性,那么继续使用:

double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    card.image = newImage;
});

如果您希望为图像更改设置动画,您可能需要查看CATransition,并将过渡效果应用于图像视图中的图像更改。

于 2013-08-08T21:25:39.307 回答