动画在完成后继续进行

时间:2014-06-05 07:55:11

标签: objective-c animation

我正在使用动画移动一些平铺(UIlabels)。这有效,但我也希望瓷砖在动画完成时返回到原始位置。我得到了非常多样的结果。有时候它的效果很好,但是当局似乎在动画重置他们的位置。以下是我的代码示例。

        [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];

                         }


                     }];

它查找我想要在数组中移动的每个tile的标记,称为tilesToMove。这也保存了我希望第一个瓷砖移动到的瓷砖标签(动画到相同的位置)。完成后,我希望它重置到原始位置。这总是有效,但有时,它会动画过渡。这不是我的意图。我只想动画第一个动作(按预期工作),而不是重置位置(重置到正确的位置,但动画)。

动画的完成是否有效?

1 个答案:

答案 0 :(得分:1)

&#34;动画的完成是否具有动画效果&#34;完成块没有做任何事情。

这是一个代码块,将在动画完成时执行。

如果该块内的代码启动另一个动画,那么它将动画。

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

<强> HINT

如果您不想让它动画,您可以使用timeDuration为0。