我在让 UiView 使用核心动画正确设置动画时遇到了一些麻烦。这是我的代码:
CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"position"];
[animation setFromValue:[NSValue valueWithCGPoint:self.view.layer.position]];
[animation setToValue:[NSValue valueWithCGPoint:CGPointMake(250, self.view.layer.position.y)]]; //I want to move my UIView 250 pts to the right
[animation setDuration:1];
[animation setDelegate:self]; //where self is the view controller of the view I want to animate
[animation setRemovedOnCompletion:NO];
[self.view.layer addAnimation:animation forKey:@"toggleMenu"]; //where self.view returns the view I want to animate
我还实现了以下委托方法:
-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
if(flag)
[self.view.layer setTransform:CATransform3DMakeTranslation(250, 0, 0)]; //set layer to its final position
}
我正在尝试使 UIView 向右移动 250 点。但是,当触发动画时,我的视图开始移动,但动画似乎在视图向右移动 250 点之前结束,导致 UIView '传送'到其最终位置。我似乎无法弄清楚是什么导致了这种行为。
我也尝试过使用 UIView 方法+(void)animateWithDuration:animations:
,这种方法效果很好。但是,我正在尝试实现一种微妙的“反弹”效果,我更愿意使用该setTimingFunction:functionWithControlPoints:
方法来实现它,而不是使用多个回调。
任何帮助和建议表示赞赏。