簡體   English   中英

UIView掀起波瀾

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM