2
重複旋轉在我的iPhone應用程序我有180度旋轉進入視野時,再次單擊該按鈕旋轉再180度回到它開始時,另一種的UIButton被按下,則一個UIButton。CAKeyframeAnimation從最後一點
這一切在第一次完整的360度過程發生時都能正常工作,但如果我嘗試從頭再次開始,它會捕捉180度,然後嘗試從該點旋轉它。任何人都可以將我指向正確的方向嗎?這裏是我到目前爲止的代碼...
showAnimation= [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation"];
showAnimation.duration = self.showAnimationDuration;
showAnimation.repeatCount = 1;
showAnimation.fillMode = kCAFillModeForwards;
showAnimation.removedOnCompletion = NO;
showAnimation.cumulative = YES;
showAnimation.delegate = self;
float currentAngle =[[[rotateMe.layer presentationLayer] valueForKeyPath:@"transform.rotation.z"] floatValue];
//Rotate 180 degrees from current rotation
showAnimation.values = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:currentAngle],
[NSNumber numberWithFloat:currentAngle + (0.5 * M_PI)],
[NSNumber numberWithFloat:currentAngle + M_PI], nil];
[rotateMe.layer addAnimation:showAnimation forKey:@"show"];
上的動畫,使之成爲可用的I然後更新rotateMe.transform旋轉層的旋轉完成。
- (void)animationDidStop:(CAKeyframeAnimation *)anim finished:(BOOL)flag
{
float currentAngle =[[[self.layer presentationLayer] valueForKeyPath:@"transform.rotation.z"] floatValue];
NSLog(@"End: %f", currentAngle);
rotateMe.transform = CGAffineTransformMakeRotation(0);
}
我已經實現了與
[UIView animateWithDuration:1.0f]
animations:^{
CGAffineTransform transform = CGAffineTransformRotate(rotateMe.transform, DEGREES_TO_RADIANS(179.999f));
rotateMe.transform = transform;
}
];
全工作的效果,但我想使動畫更加複雜,因此CAKeyframeAnimation。
謝謝!這確實工作正常,雖然作爲一個委員會的問題,我想找到我在關鍵幀版本中做錯了什麼。你有沒有關於如何將上述內容寫成關鍵幀版本的例子? – Jaaaaaay
你會做,就像我解釋說:「配置動畫是添加劑和0〜180度的動畫」。我已將關鍵幀動畫代碼添加到我的答案中。 –
好的非常感謝!我會標記爲已回答。 – Jaaaaaay