2011-04-15 69 views
0

我有兩個我想淡入淡出的視圖。我嘗試了下面的代碼,但它似乎不工作,轉換隻發生一次。任何人都可以告訴我正確的方法來完成我想要做的事情嗎?爲什麼這兩個UIViews不會使用我的動畫淡入淡出?

vView1.alpha = 0.0; 
vView2.alpha = 1.0; 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.55]; 
[UIView setAnimationRepeatCount:0]; 
vView1.alpha = (vView1 == 0.0) ? 1.0 : 0.0; 
vView2.alpha = (vView2 == 0.0) ? 1.0 : 0.0; 
[UIView commitAnimations]; 

我在viewWillAppear中設置它,以防萬一。

從Apple文件:

+0

來自Apple Doc的文本是指UIImageView,它似乎不使用。在UIView中,它講述了repeatCount:「如果指定值0,則動畫將執行一次而不重複。」 – Olof 2011-04-15 15:03:52

回答

1

UIImageView類也有一個animationRepeatCount屬性,當設置爲0表示「無限重複」。當設置爲0時,UIView類的屬性表示「重複一次」。

您正在使用UIView動畫。

如果您想無限期地重複此動畫,您可以嘗試設置選擇器以在動畫完成時使用setAnimationDidStopSelector:執行,該選擇器只是簡單地調用您的函數來執行動畫。請記住還要撥打setAnimationDelegate:,值爲self,以便您的選擇器實際被調用。

+0

啊,是的,我的錯誤,我搜索了文檔,並沒有意識到它是我在看的UIImageView ...呃!我會嘗試你的建議,聽起來不錯。感謝您的迴應。 – LilMoke 2011-04-15 15:09:55

0

從Apple文檔:

repeatCount 次動畫的數量重複。該值可以是一個分數。如果指定值0,則動畫執行一次而不重複。

這就是爲什麼你只看到你的動畫一次。

+0

我編輯了我的帖子,因爲在Apple Doc中它說:「默認值是0,它指定無限地重複動畫。」我把它設置爲0,所以它應該無限重複,是正確的? – LilMoke 2011-04-15 14:47:31

0

據我瞭解你的問題,你想vView1出現,然後再次消失。然後將repeatCount設置爲1應該可以工作。而離開了if語句,像這樣:

vView1.alpha = 0.0; 
vView2.alpha = 1.0; 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.55]; 
[UIView setAnimationRepeatCount:1]; 
vView1.alpha = 1.0; 
vView2.alpha = 0.0; 
[UIView commitAnimations]; 
+0

幾乎,我想vView1出現,vView2消失,然後vView1消失,vView2出現,我希望這個重複永遠。所以,先是1,然後是2,然後是1,然後是2,然後是1,依此類推......有意義嗎? – LilMoke 2011-04-15 15:06:38