2011-12-01 102 views
0

我嘗試使用setNeedsDisplay,但這非常取決於系統的擺佈是否刷新正確的方式。目前我每次都刪除並添加子視圖,因此最新的內容被迫顯示。代碼工作,但它缺乏優雅。強制重繪視圖

 [myView removeFromSuperview]; 
     [myView release]; 
     myView = [[MyView alloc] initWithFrame:CGRectMake(0.0, MY_VIEW_Y, 320.0, MY_VIEW_H)]; 
     [self.view addSubview:myView]; 
     //[self.myView setNeedsDisplay]; 
     [self.view bringSubviewToFront: myView]; 
+0

怎麼樣'cardView'你試圖更新不起作用? –

+0

請發佈'CardView'的實現。我不明白你是如何設計課程來更新的。 –

+0

如果你沒有提供新的值在'-drawRect:'方法中使用,你仍然沒有解釋你期望對象如何更新。我不明白你遇到的問題。 –

回答

2

您的視圖應該在下一個繪製週期重繪。這是不是發生了,或者這對你來說太慢了? ...即:你需要多快的速度來重繪,以及在調用setNeedsDisplay和drawRect之間你看到什麼延遲?

如果您需要更精確的繪圖控制,您可能需要使用由CAEAGLLayer支持的視圖,在這種情況下,它將從openGL運行並且setNeedsDisplay不起作用。

+0

速度太慢太慢。延遲的數量級是多少? – pho0

+1

很酷,這就是我想知道的。你的代碼中有一個錯誤,因爲setNeedsDisplay在下一次繪製過程中起作用,這很快就會發生。檢查以下內容1.你的setNeedsDisplay在調試器中被擊中2.你的drawRect在調試器中被擊中3.你是否因爲某種原因阻止了主運行循環? – pho0