2011-08-13 39 views
0

我正在嘗試使用UIImageView動畫實現多個動畫和「完成」事件,但失敗了,我正在嘗試塊動畫的方向。塊動畫 - 如何循環UIImage數組

我有一個UIImage數組,我需要向後循環,顯示爲我去。以下是我迄今爲止:

__block int i = 9; 
[UIView animateWithDuration:4.0 
       animations:^{ 
        self.fooView.image = fooImage[i]; 
        [self.view addSubview:self.fooView]; 
        i--; 
       } 
       completion:NULL]; 

這並愉快地顯示fooImage [] 9號元素,但它不通過其他迭代。

這是否誤解了在這種情況下塊可以做些什麼?我試圖包裝一個while循環,遞減「我」,但我結束了第一個元素只(我有點期待)。在這個實例中應該如何迭代一個數組 - 可能有9個不同的動畫塊?

任何提示將受到感謝您的時間

sc。

+0

爲什麼不直接使用UIImageView動畫?你需要在每張圖片之間進行轉換嗎? – jtbandes

+0

我不會使用C數組作爲圖像數組。我寧願使用NSArray。 – dasdom

+0

@jtbandes - 感謝您的建議,但我從UIImageView的角度來看,我無法找到一個可行的解決方案。你回答了這個特別的線索,並提出了我認爲KVO的建議。乾杯 – swisscheese

回答

1

您的動畫完成處理程序爲NULL,這意味着動畫完成後沒有任何事情發生。 如果實際上沒有動畫,使用動畫塊會很奇怪。如果沒有任何動畫需要動畫,動畫不會等待4秒鐘。

__block int i = 9; 
void(^process)(void(^recursive)()); 
process = ^(void(^recursive)()) { 
    --i; 
    [UIView animateWithDuration:4.0 
        animations:^{ 
         NSLog(@"%d", i); 
        } 
        completion:^(BOOL finished) { 
         recursive(recursive); 
        }]; 
}; 
process(process); 
+0

這真是奇怪而且有點凌亂。另外,不會將'void(^)(void(^)())'傳遞給類型爲'void(^)()'的參數會導致編譯器警告或錯誤? – jtbandes