首先,我有一个图表(Coreplot Linechart)。我已经设置了图形的 defaultPlotspace 的 x 范围和 y 范围。
- (void) setUpXRangeForPlotspace:(CPTXYPlotSpace *) plotSpace {
int rangeLength = [self xRangeLength];
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(- 0.5f) length:CPTDecimalFromFloat(rangeLength + 1.0)];
}
- (void) setUpYRangeForPlotspace:(CPTXYPlotSpace *) plotSpace {
float maxValue = [self maximumYValue];
// length = maxvalue + (10% of maxvalue);
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(maxValue + (maxValue/10.0))];
}
现在我的任务是根据用户交互沿 x 轴显示图形的一部分(区域)。为此,我正在更改 plotspace 的 globalXRange。
我拿了两个文本字段,从中获取位置和长度。btnAction:按下按钮时触发方法。
- (void) btnAction:(id) sender {
float txt1fl = [txt1.text floatValue];
float txt2fl = [txt2.text floatValue];
NSLog(@"txt1fl : %f, txt2fl : %f",txt1fl,txt2fl);
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
[plotSpace setGlobalXRange:[CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(txt1fl) length:(CPTDecimalFromFloat(txt2fl))]];
[plotSpace setGlobalYRange:plotSpace.globalYRange];
NSLog(@"Graph Global x:%f length:%f",CPTDecimalFloatValue(plotSpace.globalXRange.location),CPTDecimalFloatValue(plotSpace.globalXRange.length));
}
当我更改范围的位置并保持这样的长度时,图表显示了适当的区域。也就是说,它正在滚动到数字提到的位置。
即使我将 globalXRange 的长度从较高的值更改为较低的值 - 例如,将长度从 5.0 更改为 3.0 - 图表也显示了适当的部分。也就是说,它在更大的图片中显示了一个较小的区域。
但是,当我将 globalXRange 的长度从较低更改为较高时- 例如,将长度 3.0 更改为 5.0 - 图形的范围并没有增加。
设置范围后,我使用 NSLog 检查 globalXRange 的长度是否已更改。令人惊讶的是,长度根据 NSLog 发生了变化,但从视觉上看,图形并没有移动,也没有改变它的范围。
我无法找出解决方案。请帮我解决一下这个。提前致谢。