2010-03-03 81 views
2

我正在嘗試使UIView動起來,以便在點擊按鈕時可以變大,並通過再次點擊按鈕縮小至原始大小。動畫UIView問題(將展開的動畫與縮小的動畫匹配)

我這樣做是通過調整幀的大小和來源並運行下面的代碼。

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
self.theView.frame = frame; 
[UIView commitAnimations]; 

當將動畫設置爲更大的尺寸時,動畫應該是這樣。但是,當動畫到原始大小(較小)時,視圖立即重新調整大小,然後動畫到其指定位置。

我需要的是對較小的框架調整大小也是動畫。

我已經嘗試調整autoresizingMask,但那並沒有改變任何東西。

希望有人能幫忙。

謝謝。

+0

Michieal,我面臨着類似的問題。當我嘗試將視圖更改爲更大尺寸的動畫時,它的原點和寬度/高度都會發生變化,視圖會立即重新調整大小,然後動畫到其新位置。它與你所引用的相似,但是當我試圖炸開視圖時會發生。代碼與您上面發佈的代碼相同。什麼可能是這個問題的原因?你是如何解決它的?對於後人和未來的參考文獻,請提供您的答案,以便其他人可能受益。 – 2010-07-08 07:38:44

回答

0

我的工作解決此問題。 它在我腦海裏一直在困擾着我,所以就在本週我想,也許通過使用中心屬性和大小而不是原點,它會產生變化。

所以我決定測試一下。你猜怎麼了。使用sdk 4.x時不會發生這個問題

感謝所有的人試圖幫助我。

0

試試這個

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.5]; 
[UIView setAnimationRepeatAutoreverses:YES]; 
self.theView.frame = frame; 
[UIView commitAnimations]; 

迴應置評;

如果你想控制動畫反轉,有一個像BOOL isbig這樣的標誌,並將其設置爲在應用程序啓動到NO,然後切換到每個按鈕水龍頭,然後檢查它是否爲YES或NO,並根據結果調用一個方法。如果否,請致電您的代碼,如果不再次調用代碼,但是這次將幀設置爲原始大小。

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
self.theView.frame = originalFrame; 
[UIView commitAnimations]; 
+0

這會自動反轉動畫。我正在尋找的是將縮小的動畫與縮小的動畫相匹配。現在縮小的動畫會立即調整爲較小的大小,而不是將其設置爲動畫。 – McDJ 2010-03-03 14:08:43

+0

查看更新,如果我理解正確,這應該沒問題。 – EEE 2010-03-03 14:34:11

+0

感謝您的信息。 但這就是我所做的。基於我的旗幟,我用bigFrame或smallFrame調用動畫。 麻煩的是,當大的時候,動畫是完美的。當變小時,UIView的幀尺寸會立即更新,然後較小的幀被移動到新的座標。我期待的就像動畫到大,在那裏幀大小和幀位置將逐步更新。這沒有發生。 現在我刪除了動畫。我只是不明白爲什麼顛倒的動畫不完全一樣(但是相反)。 – McDJ 2010-03-03 15:28:53

0

我可以通過在其他線程中發現的建議來解決問題,但它有其自身的侷限性。我已經張貼在該解決方案建議在同一個線程的代碼:

UIView scaling during animation