2010-08-09 65 views
2

此代碼正在使用子類別的uiview的touchesended方法執行,但它不生成動畫,它只是立即更改背景顏色。哪裏不對?iPhone UIView動畫持續時間只能立即生效

self.backgroundColor = [UIColor blackColor]; 
    [UIView beginAnimations:nil context:NULL]; 

    [UIView setAnimationDuration:20]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
    if (score < .40) { 
     self.backgroundColor = [UIColor redColor]; 
    } else { 
     self.backgroundColor = [UIColor greenColor]; 
    } 
    [UIView commitAnimations]; 
+0

是否當您從調用它,它的工作另一個地方,在子類中,甚至在子類之外? – mvds 2010-08-09 00:57:52

+1

正在改變真正的動畫顏色? – lukya 2010-08-09 04:25:13

+0

雖然不太可能,但「20」可能被解釋而不是被視爲浮動。試着給它20.0。此外,請仔細檢查該顏色是否爲Apple開發人員文檔中的「動畫屬性」。 – mtrc 2010-08-09 15:35:34

回答

1

[UIView commitAnimations]方法不會阻止 - 因此,如果調用它,它會啓動動畫,但它這一點後,即刻執行代碼。如果你有任何代碼改變背景顏色,它會破壞你的動畫。

如果這不起作用,嘗試動畫不同的屬性 - 我知道我的頭頂位置& alpha是動畫,但我不確定顏色。 (阿爾法只是一個float值,中心只是一個CGPoint,這兩者都是原語,但UIColor是引用類型和的UIView可能不知道如何製作動畫的指針。)