我有一个应用程序向用户提供某种线图。我正在使用包含图形视图的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