首先,我有一个图表(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))];
}
Run Code Online (Sandbox Code Playgroud)
现在我的任务是根据用户交互显示沿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));
}
Run Code Online (Sandbox Code Playgroud)
当我改变范围的位置并保持这样的长度时,图表显示适当的区域.也就是说,它滚动到数字提到的位置.
甚至当我改变长度的globalXRange的从更高到较低值-例如,从5.0到3.0变化的长度-的图表中示出了相应的部分.也就是说,它在较大的图片中显示较小的区域.
但是当我将globalXRange的长度从低到高更改时 - 例如,将长度3.0更改为5.0 - 图表的范围不会增加.
在设置了我使用NSLog检查的范围后,如果globalXRange的长度已经改变.令人惊讶的是,根据NSLog,长度已经改变,但在视觉上图表没有移动也没有改变其范围.
我无法解决问题.请帮我解决一下这个.提前致谢.
| 归档时间: |
|
| 查看次数: |
1629 次 |
| 最近记录: |