我需要在我的应用程序中创建一个线图来跟踪数据。我看着核心情节,似乎很复杂。是否有一种更简单的方法来制作可以水平移动的折线图,它需要能够添加新的线段。并且不会导致巨大的内存过载,因为会经常添加很多内容,因此我可以将其删除,以便它们在飞蛾之后删除。所以我的问题基本上是:有一个比核心情节更简单的方法,如果有人能引导我朝着能够添加更多细分市场的方向。提前谢谢。
我试过这个
- (void)drawRect:(CGRect)rect
{
// Drawing code
[super drawRect:rect];
// find min and max values of data
float max = -HUGE_VALF, min = HUGE_VALF;
for (int i = 0; i < 0; i ++)
{
min = MIN(min, 0);
max = MAX(max, 10);
}
// build path
for (int i = 0; i < 0; i ++)
{
// line spacing is the distance you want between line vertices
float x = i * 1;
// scale y to view height
float y = ((1 - min) / (max - min)) * self.bounds.size.height;
if (i == 0)
{
CGContextMoveToPoint(ctx, x, y);
}
else
{
CGContextAddLineToPoint(ctx, x, y);
}
}
// stroke path (configure color, width, etc before this)
CGContextStrokePath(nil);
}
@end
答案 0 :(得分:1)
您可以使用CoreGraphics自行绘制。
在UIView(或自定义图像上下文)的drawRect
中。
{
// find min and max values of data
float max = -HUGE_VALF, min = HUGE_VALF;
for (int i = 0; i < dataCount; i ++)
{
min = MIN(min, data[i]);
max = MAX(max, data[i]);
}
// build path
for (int i = 0; i < dataCount; i ++)
{
// line spacing is the distance you want between line vertices
float x = i * lineSpacing;
// scale y to view height
float y = ((data[i] - min) / (max - min)) * self.bounds.size.height;
if (i == 0)
{
CGContextMoveToPoint(ctx, x, y);
}
else
{
CGContextAddLineToPoint(ctx, x, y);
}
}
// stroke path (configure color, width, etc before this)
CGContextStrokePath(ctx);
}
这很简单,但希望它能让你朝着正确的方向前进。