【发布时间】:2014-12-12 07:59:14
【问题描述】:
我已经绘制了一个包含两个 y 轴和 x 轴的折线图。
现在我想限制/限制放大和缩小。 我使用以下代码来限制
-(CPTPlotRange*)plotSpace:(CPTPlotSpace *)space willChangePlotRangeTo:(CPTPlotRange *)newRange forCoordinate:(CPTCoordinate)coordinate
{
if([newRange locationDouble] < 0)
{
if(coordinate == CPTCoordinateX)
return [(CPTXYPlotSpace*)space xRange];
else if(coordinate == CPTCoordinateY)
return [(CPTXYPlotSpace*)space yRange];
}
if([newRange locationDouble] < 1000)
{
if(coordinate == CPTCoordinateX)
return [(CPTXYPlotSpace*)space xRange];
else if(coordinate == CPTCoordinateY)
return [(CPTXYPlotSpace*)space yRange];
}
return newRange;
}
and for zooming i used following code
-(BOOL)plotSpace:(CPTPlotSpace *)space shouldScaleBy:(CGFloat)interactionScale aboutPoint:(CGPoint)interactionPoint
{
CPTGraph *graph = self.hostView.hostedGraph;
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
// plotSpace.delegate = self;
NSInteger xAxisMin = 0;
NSInteger xAxisMax = 15;
NSInteger yAxisMin = 0;
NSInteger yAxisMax = 100;
if ((plotSpace.xRange>= [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(xAxisMin) length:CPTDecimalFromDouble(2*(xAxisMax-xAxisMin))])||
((plotSpace.yRange>= [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yAxisMin) length:CPTDecimalFromDouble(2*(yAxisMax-yAxisMin))])))
{
//return NO;
plotSpace.allowsUserInteraction = YES;
CPTGraph *graph = self.hostView.hostedGraph;
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
plotSpace.delegate = self;
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(xAxisMin) length:CPTDecimalFromFloat(xAxisMax - xAxisMin)];
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yAxisMin) length:CPTDecimalFromFloat(yAxisMax - yAxisMin)];
plotSpace.allowsUserInteraction = YES;
return YES;
}
else if ((plotSpace.xRange<= [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(xAxisMin) length:CPTDecimalFromDouble((xAxisMax-xAxisMin)/2)])||
((plotSpace.yRange<= [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yAxisMin) length:CPTDecimalFromDouble((yAxisMax-yAxisMin)/2)])))
{
//[_hostingView setAllowPinchScaling:NO];
plotSpace.allowsUserInteraction = YES;
//return NO;
CPTGraph *graph = self.hostView.hostedGraph;
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
plotSpace.delegate = self;
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(xAxisMin) length:CPTDecimalFromFloat(xAxisMax - xAxisMin)];
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yAxisMin) length:CPTDecimalFromFloat(yAxisMax - yAxisMin)];
plotSpace.allowsUserInteraction = YES;
// [hostingView setAllowPinchScaling:YES];
return YES;
}
return YES;
}
但问题是上面的 shouldScaleBy: 委托没有调用。 我不明白为什么不调用它。
请提供代码以进行一定程度的缩放。
【问题讨论】:
-
此链接可能会帮助您找到与查询相关的核心情节stackoverflow.com/questions/tagged/core-plot?sort=active
-
我已经看过这个问题,请举个例子
-
您应该使用传递给您的委托的绘图空间参数。这使您可以将同一个委托用于多个绘图空间,并使代码更容易在另一个项目中重用。
标签: objective-c ios8 core-plot