我的應用程序能夠做一些簡單的圖形繪製(直到我得到一個更穩定的代碼,我堅持只有一個數字),它也能夠重新調整它們的大小。我用它來創建一個UIView
的代碼如下:UIView繪圖的最佳實踐
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
[self setContextFillColor:context];
[self setContextStrokeColor:context];
[self setLineWidth:context];
CGFloat lineThickness = [self lineWidth] ;
CGFloat halfLineThickess = lineThickness/2.0f;
CGContextAddRect(context, CGRectMake(halfLineThickess,halfLineThickess, rect.size.width - lineThickness, rect.size.height - lineThickness));
CGContextDrawPath(context, kCGPathEOFillStroke);
}
這給了我,用(100.0f,100.0f)的輸入尺寸,這樣的:
這個數字是在「容器」UIView
內部,其在UIScrollView
內。我的問題是當我重新調整圖形尺寸並達到大約1000 * 1000(我的「容器」是20,000 * 20,000)時,我開始接收內存警告,應用程序最終放棄。所以我的問題是:
1)我應該考慮把最大尺寸爲UIView
? 2)我怎樣才能使用這些工具來跟蹤這類問題,並且看看問題出現在哪裏(或者在哪裏進行繁重的工作)。
3)我應該使用某種緩存,如this?
4)是否有一些通用的最佳實踐要考慮,當繪製一個UIView
?
5)我是否應該考慮CALayer
,雖然我需要傾聽觸動?
UIView
的重新調整大多基於this。
你有沒有考慮過使用QuartzCore,只是使用視圖的圖層屬性來繪製邊框? – runmad
事情是:這是一個簡單的數字。最後我會有更復雜的,我不認爲玩'UIView'的屬性就足夠了。但謝謝你的建議。 – Peres
如果您需要繪製大型內容(可能是縮放),您可能需要檢查'CATiledLayer' http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CATiledLayer_class/Introduction/Introduction.html – Bastian