Ios 核心打印:当设备方向改变时,如何动态更改plotSpace.xRange?
我有一个iOS应用程序,里面有很多图表。当图表以横向模式显示时,我想修改xRange值,但我不能让Core Plot这样做 我试图通过调用Ios 核心打印:当设备方向改变时,如何动态更改plotSpace.xRange?,ios,core-plot,xrange,Ios,Core Plot,Xrange,我有一个iOS应用程序,里面有很多图表。当图表以横向模式显示时,我想修改xRange值,但我不能让Core Plot这样做 我试图通过调用 [graph removePlotWithIdentifier:@"myGraphName"]; 在“WillRotateToInterfaceOrientation”中,然后使用新的xRange再次构建我的图形,但它不起作用 我希望CorePlot根据设备方向动态调整xRange 我有以下代码来管理不同的xRange,具体取决于第一次创建图形时的设备方向
[graph removePlotWithIdentifier:@"myGraphName"];
在“WillRotateToInterfaceOrientation”中,然后使用新的xRange再次构建我的图形,但它不起作用
我希望CorePlot根据设备方向动态调整xRange
我有以下代码来管理不同的xRange,具体取决于第一次创建图形时的设备方向:
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if(orientation == UIInterfaceOrientationPortrait
|| orientation == UIInterfaceOrientationPortraitUpsideDown) {
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(lengthToDisplay/2) length:CPTDecimalFromInteger(lengthToDisplay/2)];
} else if(orientation == UIInterfaceOrientationLandscapeLeft
|| orientation == UIInterfaceOrientationLandscapeRight) {
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(lengthToDisplay) length:CPTDecimalFromInteger(lengthToDisplay)];
}
它很好用。但是,如果图形已经显示,并且我更改了设备方向,则不会发生任何事情。我试图将此代码放在“WillRotateToInterfaceOrientation”中,但还是没有任何结果。此代码是否实际执行?使用
NSLog
语句查找。你在测试什么版本的iOS?从iOS 6开始,设备旋转的处理方式发生了变化。看苹果的。下面的代码执行:我没有把所有的东西都放在这里,但我会根据设备的方向处理其他的变化,这些变化是在设备方向改变时完成的。我已经在iOS6和更早的版本上试过了。无法理解为什么未更新范围…什么是plotSpace
?它是指图形实际使用的绘图空间吗?显示长度的值是多少?它是什么类型?是的,plotSpace是对图形实际使用的绘图空间的引用:CPTXYPlotSpace*plotSpace=(CPTXYPlotSpace*)graph.defaultPlotSpace
和lengthToDisplay是根据要显示的点数计算的,它是一个NSInteger:NSInteger lengthToDisplay=[Data\u graph count]*graphTimeFrame代码>