Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 动画完成后继续进行_Objective C_Animation - Fatal编程技术网

Objective c 动画完成后继续进行

Objective c 动画完成后继续进行,objective-c,animation,Objective C,Animation,我正在用动画移动一些瓷砖。这是可行的,但我也希望瓷砖在动画完成时返回到其原始位置。我在这方面得到了各种各样的结果。有时,它的效果很好,但当局似乎在重新调整他们的立场。这是我的代码示例 [UIView animateWithDuration:animationLength animations:^{ for (int c = 0; c<tilesToMove.count; c++) { animationMoving =

我正在用动画移动一些瓷砖。这是可行的,但我也希望瓷砖在动画完成时返回到其原始位置。我在这方面得到了各种各样的结果。有时,它的效果很好,但当局似乎在重新调整他们的立场。这是我的代码示例

        [UIView animateWithDuration:animationLength animations:^{
            for (int c = 0; c<tilesToMove.count; c++) {
                animationMoving = true;
                NSInteger fromTile = [tilesToMove[c][0] integerValue];
                NSInteger toTile = [tilesToMove[c][1] integerValue];
                UILabel *toTile = (UILabel *)[self.view viewWithTag:toTile];
                UILabel *fromLabel = (UILabel *)[self.view viewWithTag:fromTile];
                fromLabel.frame = CGRectMake(toTile.frame.origin.x, toTile.frame.origin.y, fromLabel.frame.size.width,fromLabel.frame.size.height);
            }

    }
                     completion:^(BOOL finished){
                         if (finished) {
                             for (int c = 0; c<tilesToMove.count; c++) {
                                 NSInteger fromTile = [tilesToMove[c][0] integerValue];
                                 NSInteger toTile = [tilesToMove[c][1] integerValue];
                                 UILabel *button = (UILabel *)[self.view viewWithTag:fromTile+100000];
                                 UILabel *fromLabel = (UILabel *)[self.view viewWithTag:fromTile];
                                 fromLabel.frame = CGRectMake(button.frame.origin.x, button.frame.origin.y, fromLabel.frame.size.width,fromLabel.frame.size.height);

                             }
                              [self animateMoveCompleted:moveDirection];

                         }


                     }];
[UIView animateWithDuration:animationLength动画:^{
对于(int c=0;c“是否完成动画动画制作”完成块不执行任何操作

这是动画完成时将执行的代码块

如果该块中的代码启动另一个动画,则“是”将设置动画

因为你调用了一个名为
animate…
的方法,所以这就是问题所在。你需要运行一个不设置属性动画的方法。如果你不想设置属性动画,它应该设置属性

提示


或者,如果您不想让它成为动画,您可以使用0的
时长

是的,这是我最初的想法。我只是在看到它时感到困惑。我想这是另一个问题。谢谢您澄清:)@runartrollet哪一个不同的问题?不确定你是否说我的答案是正确的?:)animateMoveComplete只刷新标签中的值,不包含任何可以设置动画的内容。我通过不调用它来检查这一点,没有任何区别。你的答案很有帮助,因此我认为我会将其标记为我的答案,因为我认为这就是你能帮我做的,没有看到更多我的项目。完成后的动画制作的问题仍然存在。但我猜一定是其他原因造成的。我不明白是什么。我确实弄明白了。有一个不同的动画正在进行,动画制作的方式也不一样。我猜这也让这个动画产生了。但是t谢谢:)你在使用自动布局吗?它是在情节提要上选择的。我可能不应该处于启用状态,因为我是在代码中进行布局的。我只是禁用了它,但没有什么不同。