核心情节禁用轴和y轴缩放,滚动
问题描述:
我要让这样一件事:http://youtu.be/PeRhxSCx2xM核心情节禁用轴和y轴缩放,滚动
我尝试实现这个方法:
//viewDidLoad
//plotSpace.delegate = self;
- (CPTPlotRange *)plotSpace:(CPTPlotSpace *)space
willChangePlotRangeTo:(CPTPlotRange *)newRange
forCoordinate:(CPTCoordinate)coordinate {
NSLog(@"WillChangePlotRangeTo");
// only allows scrolling to the right
// remove this to have scrolling in both directions
if (newRange.locationDouble < 0.0F) {
newRange.location = CPTDecimalFromFloat(0.0);
}
// Adjust axis to keep them in view at the left and bottom;
// adjust scale-labels to match the scroll.
CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet;
if (coordinate == CPTCoordinateX) {
axisSet.yAxis.orthogonalCoordinateDecimal = newRange.location;
axisSet.xAxis.titleLocation = CPTDecimalFromFloat(newRange.locationDouble +
(newRange.lengthDouble/2.0F));
} else {
axisSet.xAxis.orthogonalCoordinateDecimal = newRange.location;
axisSet.yAxis.titleLocation = CPTDecimalFromFloat(newRange.locationDouble +
(newRange.lengthDouble/2.0F));
}
return newRange;
}
,我尝试这,这个解决方案的工作时,我缩小,而不是当我放大工作。
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(1.0) length:CPTDecimalFromFloat(3.0)];
plotSpace.globalYRange = plotSpace.yRange;
谁能请解释我,什么是正确的结果,其工作实际上是如何。
感谢的答复
答
最简单的方法是只忽略newRange
和y坐标返回现有yRange
。您也不必在此更新轴属性。有更简单的方法来做到这一点。
图形设置:
// leave the titleLocation for both axes at the default (NAN) to center the titles
xAxis.axisConstraints = [CPTConstraints constraintWithLowerOffset:0.0];
yAxis.axisConstraints = [CPTConstraints constraintWithLowerOffset:0.0];
剧情空间委托:
- (CPTPlotRange *)plotSpace:(CPTPlotSpace *)space
willChangePlotRangeTo:(CPTPlotRange *)newRange
forCoordinate:(CPTCoordinate)coordinate {
CPTPlotRange *updatedRange = nil;
switch (coordinate) {
case CPTCoordinateX:
if (newRange.locationDouble < 0.0F) {
CPTMutablePlotRange *mutableRange = [[newRange mutableCopy] autorelease];
mutableRange.location = CPTDecimalFromFloat(0.0);
updatedRange = mutableRange;
}
else {
updatedRange = newRange;
}
break;
case CPTCoordinateY:
updatedRange = ((CPTXYPlotSpace *)space).yRange;
break;
}
return updatedRange;
}
答
我有类似的情况和问题,它让我抓狂,因为我忘了设定的委托:
plotSpace.delegate = self;
完美的答案它的工作,非常感谢你,只有一件事:当我做出一个大的缩小应用程序崩溃与此消息: - [CPTPlotRange mutableCopyWithZone:]:无法识别的选择器发送到实例0xd876030 2012-03-01 07:41:58.676 SSDev [823:11f03] ***由于未捕获异常'NSInvalidArgumentException',原因:' - [CPTPlotRange mutableCopyWithZone :]:无法识别的选择器发送到实例0xd876030' ***第一次抛出调用堆栈: – flatronka 2012-03-01 05:44:22