2013-05-29 68 views
1

我是新手ios程序員&我正在做我的第一個ios項目。在我的項目中,我有幾個UIViewUIViewController。在每個視圖中,我都覆蓋了drawRect方法並繪製了幾個圓圈。在我看來,我需要繪製一個矩形,當我觸摸它時,它會在動畫下面繪製另外3個矩形。我想知道做什麼是最好的方法!我正在考慮通過調用setNeedsDisplay重新繪製視圖,並用動畫繪製其他三個矩形。我怎樣才能實現這一點,還有什麼方法最適合用動畫來執行這個特定的事情?用動畫重繪UIView

回答

1

覆蓋drawRect可能不是您的最佳解決方案,因爲要完成許多類型的動畫,您需要在定時器下多次重繪動畫。除此之外,您的繪圖將使用CPU完成,您將無法利用任何硬件加速。

我建議,在三個新的矩形可見之前,你應該在這些矩形應該是的地方添加三個UIViews到視圖層次結構。設置每個視圖你想要矩形的顏色的backgroundColor財產和每個視圖的alpha值設置爲0。當它的時間以動畫的矩形眼簾,你就可以使用這樣的代碼:

[UIView animateWithDuration:0.2 animations:^{ 
    rectView1.alpha = 1.0; 
    rectView2.alpha = 1.0; 
    rectView3.alpha = 1.0; 
}]; 

當然,更改動畫的持續時間以適合您的應用程序,並且您還可以更改rectView的其他屬性。假設你想讓曲柄褪去從側面飛入。您可以通過在動畫之前調整每個rectView的frame屬性,然後在動畫塊內部完成該操作。

+0

偉大的解決方案。但我有一些問題.. *我應該在這種情況下需要使用'setneedsdisplay'嗎?並且可以在沒有首次調用這三個'uiview'的情況下聲明這三個'uiview' – sujat

+0

當你想強制一個視圖用drawRect重繪時,你需要調用setNeedsDisplay,但是如果你只是操縱視圖的子視圖,那麼你可以*不*需要重繪父視圖,實際上調用setNeedsDisplay可能會損害程序的性能。 –

+0

非常感謝。希望這將有助於完成我的任務.... – sujat