私は、ユーザーに何らかの線グラフを提供するアプリを持っています。グラフを含むビューを含むUIScrollViewを使用しています。ビューは、CoreGraphicsを使用してグラフをdrawrectメソッドに描画しています。 グラフが長すぎると問題が発生します。グラフをスクロールすると、アプリが途切れてしまい、最終的にアプリがメモリ不足になり、終了します。他のアプリを見てみると、WeightBotアプリを作成したユーザーは、長時間進行中のグラフを問題なく管理できるようになったので、間違った方法でやっているようです。ScrollViewが大きすぎるとメモリ不足になる
このような長い線グラフがメモリの問題にぶつかることなくどのように作成されるのだろうか?
EDIT:
は基本的にすべての私はいくつかのコードを追加することがそれで、グラフの構築ビューにinitではのdrawRectメソッドだとscrollViewにサブビューとしてビューを追加します。データセットの
- (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);
}
}
最も重要なことは、グラフ全体ではなく、表示されている矩形を描画するようにしてください。あなたは私たちにいくつかのコードを示す必要があります。 –
グラフは一度だけ描画されます。質問を明確にするためにコードを追加しました。 – Oysio