2013-12-17 43 views
1

我需要在重複動畫之前調用某個方法。 我不知道該放哪一行代碼。每當動畫重複時調用一個方法

這是我的代碼製作動畫的對象:

[UIView animateWithDuration:speed 
         delay:delay 
        options:UIViewAnimationOptionAllowUserInteraction|UIViewAnimationOptionCurveLinear|UIViewAnimationOptionRepeat 
       animations:^(void){ 

        cloud.frame = (CGRectMake(cloud.frame.origin.x, cloud.frame.origin.y+600, cloud.frame.size.width, cloud.frame.size.height)); 

       }completion:^(BOOL finished){ 
        if (finished){ 
         [cloud setBackgroundImage:[UIImage imageNamed:@"cloudWhite.png"] forState:UIControlStateNormal]; 
        } 
       }]; 

方法稱爲完成部分每重複之前,但只有在整個動畫完成將不會被執行,與人一起重複 - 這在這種情況下,永遠不會。

我的問題是,如何在每個動畫重複之前調用方法?

回答

5

我會建議重構你的動畫,所以它不使用UIViewAnimationOptionRepeat。相反,編寫一個執行動畫的單個循環的方法。然後添加一個遞歸調用方法的完成方法塊。

您還可以在完成塊中將動畫的每個迭代放入想要觸發的方法調用。

相關問題