现在的位置: 首页 > 综合 > 正文

关于CorePlot控制XY轴缩放的问题解决方案

2013年10月18日 ⁄ 综合 ⁄ 共 892字 ⁄ 字号 评论关闭

1.如果屏幕能显示下XY轴所有坐标,可以用containsRange方法判断代理方法中传送给过来的newRange是否在设定的最大range范围内;

2.如果屏幕显示不下所有的坐标,当我们设定一个最大Range的时候,利用containsRange来判断,如果设定的最大Range小于globalRange,则会有一部分坐标在缩放到一定程度之后,无法显示,也无法拖动;如果设定的Range大于globalRange,那么设定则没有任何意义了;这时候就需要在代理方法里根据newRange传送过来的length进行判断,设定newRange的location作为返回range的location,设定的最大Range的length作为返回Range的length,如下代码:

3.该代理方法在拖动coreplot或者缩放的时候,都会走这里。

-(CPTPlotRange *)plotSpace:(CPTPlotSpace *)space willChangePlotRangeTo:(CPTPlotRange *)newRange forCoordinate:(CPTCoordinate)coordinate

{
if(coordinate == CPTCoordinateY)
{
CPTXYPlotSpace *xySpace = (CPTXYPlotSpace*)space;
return xySpace.yRange;
}
else
{
NSDecimal maxLength = CPTDecimalFromFloat(_xMaxZoom);
NSDecimal newLength = newRange.length;
if(NSDecimalCompare(&maxLength, &newLength) == NSOrderedAscending)
{
CPTPlotRange *xMaxZoomRange = [CPTPlotRange plotRangeWithLocation:newRange.location length:maxLength];
return xMaxZoomRange;
}
else
{
return newRange;
}

}
}

抱歉!评论已关闭.