2013-11-01 103 views
0

下面是我用來採取UIImageView並使其上下浮動的代碼。創建動畫以使UIImageView無限上下(幾乎浮動)時,如何在動畫結束時停止暫停?

[UIView animateKeyframesWithDuration:2.0 delay:0.0 options:UIViewKeyframeAnimationOptionRepeat animations:^{ 
     [UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:0.25 animations:^{ 
      self.slider.transform = CGAffineTransformMakeTranslation(0, -5.0); 
     }]; 
     [UIView addKeyframeWithRelativeStartTime:0.25 relativeDuration:0.5 animations:^{ 
      self.slider.transform = CGAffineTransformMakeTranslation(0, 5.0); 
     }]; 
     [UIView addKeyframeWithRelativeStartTime:0.75 relativeDuration:0.25 animations:^{ 
      self.slider.transform = CGAffineTransformMakeTranslation(0, 0.0); 
     }]; 
    } completion:^(BOOL finished) { 

    }]; 

但是,在動畫結束之後以及重新啓動之前,這個延遲會出現。

如何讓它變得流暢?

回答

1

我不確定你到底會產生什麼樣的效果,但我認爲這會給你一些像你的代碼一樣沒有延遲的東西。我通常通過動畫約束來做到這一點,而不是使用變換。在這個例子中,我製作了一個IBOutlet(topCon)到視圖頂部的約束:

-(IBAction)floatView:(id)sender { 
    static int i= 1; 
    static float duration = .25; 
    [UIView animateWithDuration:duration delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ 
     self.topCon.constant = self.topCon.constant - (5 * i); 
     [self.view layoutIfNeeded]; 
    } completion:^(BOOL finished) { 
     i = (i == 1 || i == 2)? -2 : 2; 
     duration = 0.5; 
     [self floatView:self]; 
    }]; 
} 
+0

這就是我所要做的。無限地上下浮動。 –