Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 核心打印:沿x轴平移和缩放两个打印空间,并自动缩放两个y轴_Ios_Objective C_Cocoa Touch_Core Plot - Fatal编程技术网

Ios 核心打印:沿x轴平移和缩放两个打印空间,并自动缩放两个y轴

Ios 核心打印:沿x轴平移和缩放两个打印空间,并自动缩放两个y轴,ios,objective-c,cocoa-touch,core-plot,Ios,Objective C,Cocoa Touch,Core Plot,我有一个核心图,其中有两个直线图(图1在左舷上使用y-轴,图2在右舷上使用y2-轴)和两个图空间(lhsPlotSpace和rhsPlotSpace) 对于初始绘图设置,我使用scaleToFitPlots自动缩放两个绘图,效果与预期一致: [lhsPlotSpace scaleToFitPlots:lhsPlots]; [rhsPlotSpace scaleToFitPlots:rhsPlots]; 然后,该图看起来类似于下面的屏幕截图 为了显示更多细节,我希望允许用户水平平移和水平缩放,只

我有一个核心图,其中有两个直线图(图1在左舷上使用
y
-轴,图2在右舷上使用
y2
-轴)和两个图空间(
lhsPlotSpace
rhsPlotSpace

对于初始绘图设置,我使用
scaleToFitPlots
自动缩放两个绘图,效果与预期一致:

[lhsPlotSpace scaleToFitPlots:lhsPlots];
[rhsPlotSpace scaleToFitPlots:rhsPlots];
然后,该图看起来类似于下面的屏幕截图

为了显示更多细节,我希望允许用户水平平移和水平缩放,只要左右两侧显示更多数据(平移和缩放应仅由用户沿
x
-轴驱动)

应根据平移和缩放后可见的范围,自动缩放y轴和y2轴

你能帮我解决一下这个问题吗?我试图使用代理

根据我在核心绘图论坛中找到的代码示例,在StackOverFlow上,我尝试使用委托方法
plotSpace:willChangePlotRangeTo:forCoordinate

- (CPTPlotRange *)plotSpace:(CPTPlotSpace *)space 
willChangePlotRangeTo:(CPTPlotRange *)newRange 
forCoordinate:(CPTCoordinate)coordinate
{
if (coordinate == CPTCoordinateY) {
   newRange = ((CPTXYPlotSpace*)space).yRange;

return newRange     
}
但除了得到非常基本的缩放,我没有找到一个解决方案,甚至接近我的问题

您能告诉我使用哪些代理方法、如何限制滚动以及在平移和缩放后如何以及在何处设置新的
y
-比例因子吗

多谢各位


将每个绘图空间的
globalYRange
设置为相应的
yRange
,以防止在y方向上缩放和滚动

-scaleToFitPlots:
在计算新范围时使用给定绘图的所有绘图数据。如果要根据可见数据缩放打印空间
yRange
,则必须在“打印空间”委托中自己进行缩放。
-plotSpace:willChangePlotRangeTo:forCoordinate:
委托方法是一个很好的选择