2012-07-07 204 views
1

我有一個UIView和drawRect()繪製它的內容,但我需要有時調整視圖大小取決於一些計算是在拉絲過程中完成的:調整尺寸的UIView

當我改變大小,繪製接縫以縮放,而不是使用從調整大小獲得的額外大小。

這是我如何調整形式drawRect()

CGRect limits = self.frame ; 
limits.size.width = 400; 
self.frame = limits; 

它接縫像上下文不知道調整大小和使用舊規格的圖紙。調整大小後我已經嘗試[self setNeedsDisplay],但不再調用繪製方法。

回答

1

計算應該提前完成,而不是在繪圖過程中進行,因爲單獨的性能原因(儘管早期計算也會避免此問題)。

例如,如果你的計算取決於多種因素,XYZ,安排重做每當有變化XYZ這些計算。必要時緩存計算結果,並在此時調整視圖框架大小。 drawRect:實施應該只繪製到它給出的區域。

0

對於任何人都在掙扎。

顯然[self setNeedsDisplay]如果從drawRect調用(或從drawRect調用的任何方法:)將不會產生任何效果。爲什麼它只是跳過電話。

使事情發生使用以下代替

[self performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:0]; 

將其稱爲權當主隊列再次空閒;只要確保使用一些條件來調用drawRect中的needsDisplay條件 - 否則你將會循環。