Ios 为什么这个动画只工作一次?
我有一个UIView,其中包含一个UIAPTgestureRecognitor,它触发一个名为Ios 为什么这个动画只工作一次?,ios,objective-c,core-animation,cabasicanimation,Ios,Objective C,Core Animation,Cabasicanimation,我有一个UIView,其中包含一个UIAPTgestureRecognitor,它触发一个名为handleLeftTap的方法 -(void)handleLeftTap { self.player.direction = LEFT; if(!self.isAnimating && self.toTile.isWalkable) { for(UIView *currentView in self.subviews) { C
handleLeftTap
的方法
-(void)handleLeftTap {
self.player.direction = LEFT;
if(!self.isAnimating && self.toTile.isWalkable) {
for(UIView *currentView in self.subviews) {
CABasicAnimation *moveAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
[moveAnimation setDuration:MOVE_ANIMATION_DURATION];
[moveAnimation setDelegate:self];
[moveAnimation setRemovedOnCompletion:NO];
[moveAnimation setFillMode:kCAFillModeForwards];
moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(currentView.center.x+TILE_WIDTH, currentView.center.y)];
[currentView.layer addAnimation:moveAnimation forKey:nil];
}
NSLog(@"animated\n");
}
}
当我第一次点击屏幕时,这个动画效果非常好;每个子视图向右移动
TILE\u WIDTH
像素。但是,如果我再次点击屏幕,动画根本不起作用;没有视图移动。我使用断点逐步浏览了这段代码,并验证了该动画是否已添加到层中。只是没有应用动画之类的东西。是否有办法解决此问题?不太确定,但您确定第二个动画的位置与第一个动画后的位置不同吗?第二次是否通过了if语句?@rdelmar-yesp。我在if语句上方放置了一个断点来测试它,它确实通过了if语句。谢谢!我在动画之后记录了视图的位置,结果证明我实际上并没有改变视图的位置,只是将视图设置成它的样子。我通过将self.view.layer.position=finalPosition
在animationDidStop
方法中键入代码来修复代码。