我有一個應用程序向用戶提供某種線圖。我正在使用包含圖形視圖的UIScrollView。這個視圖使用CoreGraphics來繪製它的直方圖。 圖形變得太長時會出現問題。滾動瀏覽圖表似乎是口吃,最終應用程序將耗盡內存並退出。環顧其他應用程序,我看到創建了WeightBot應用程序的人能夠管理長期持續的圖形,沒有任何問題,所以顯然我做的是錯誤的方式。ScrollView在內存過大時耗盡內存
我想知道如何創建這種長線圖而不會碰到內存問題?
編輯:加入一些代碼
基本上所有我做的是初始化它建立在它的圖形視圖的drawRect方法並添加視圖作爲一個子視圖的滾動視圖。
這是視圖的drawRect是如何實現的:
- (void)drawRect:(CGRect)rect
{
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(c, self.backgroundColor.CGColor);
CGContextFillRect(c, rect);
//... do some initialization
for (NSUInteger i = 0; i < xValuesCount; i++)
{
NSUInteger x = (i * step) * stepX;
NSUInteger index = i * step;
CGPoint startPoint = CGPointMake(x + offsetX, offsetY);
CGPoint endPoint = CGPointMake(x + offsetX, self.frame.size.height - offsetY);
CGContextMoveToPoint(c, startPoint.x, startPoint.y);
CGContextAddLineToPoint(c, endPoint.x, endPoint.y);
CGContextClosePath(c);
CGContextSetStrokeColorWithColor(c, self.gridXColor.CGColor);
CGContextStrokePath(c);
}
}
最重要的是,確保你只繪製可見矩形而不是整個圖形。你需要向我們展示一些代碼。 – 2010-11-25 21:45:53