[英]UIView to make an arm wave
我正在嘗試使用UIView動畫制作臂波效果(Hello!),但是當最后一個關閉時,它會回到起始位置。 我希望波浪來回。
第一個關鍵幀:旋轉30˚第二個關鍵幀:旋轉-30˚第三個關鍵幀:應該旋轉0˚
arm.layer.anchorPoint = CGPointMake(1.0, 1.0);
float x = arm.frame.origin.x + arm.frame.size.width;
float y = arm.frame.origin.y + arm.frame.size.height;
arm.layer.frame = CGRectMake(x, y, arm.frame.size.width, arm.frame.size.height);
[self.scrollView arm];
float degrees = 30.0;
float radians = (degrees/90.0)*M_PI;
[UIView animateKeyframesWithDuration:4.0f delay:0.0 options:UIViewKeyframeAnimationOptionRepeat
animations:^{
[UIView addKeyframeWithRelativeStartTime:0 relativeDuration:.5 animations:^{
arm.transform = CGAffineTransformMakeRotation(radians);
}];
[UIView addKeyframeWithRelativeStartTime:.5 relativeDuration:.75 animations:^{
arm.transform = CGAffineTransformMakeRotation(-radians);
}];
[UIView addKeyframeWithRelativeStartTime:1.25 relativeDuration:.5 animations:^{
arm.transform = CGAffineTransformMakeRotation(0);
}];
原因是您在關鍵幀動畫的前兩個幀上用完了整個動畫。 這些是相對時間和相對持續時間; 它們都必須小於1!
因此,在第一個動畫上,您會用完一半動畫( .5
)。
在第二個動畫中,您從動畫( .5
)的一半開始,然后用完了動畫的其余部分( .75
大於.5
(剩下的全部就是.5
))。
因此,第三個永遠不會發生。 無論如何,它都是完全不正確的:您不能有 1.75
的相對開始時間,因為1
是動畫的結束。 閱讀文檔:
此值必須在0到1的范圍內,其中0表示整個動畫的開始,而1表示整個動畫的結束。 例如,對於持續時間為兩秒的動畫,將開始時間指定為0.5會使動畫在整個動畫開始后一秒鍾開始執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.