2

为什么以下代码在触发后立即记录“完成”?

[UIView animateWithDuration:0.3 
                 animations:^{
                        NSLog(@"Start");
                 } 
                 completion:^(BOOL finished){
                     NSLog(@"done");
                 }
 ];
4

2 回答 2

8

因为您实际上并没有为任何东西设置动画(不能为 NSLog 设置动画)。您需要为对象设置动画,否则将立即调用完成块。如果没有任何动画,0.3 秒的持续时间将被忽略。

于 2012-06-06T18:42:47.680 回答
3

因为你没有动画任何东西。如果您在动画块中更改某些 UIView 的值,您将在 0.3 秒延迟后正确看到“完成”输出。

我完全使用您的代码测试了 5 秒的延迟,只添加了一些动画来确认。

于 2012-06-06T18:41:45.060 回答