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谢谢:)你在使用自动布局吗?它是在情节提要上选择的。我可能不应该处于启用状态,因为我是在代码中进行布局的。我只是禁用了它,但没有什么不同。