作为一种解决方法,我在可见屏幕上实现了一些BarPlot ,但与alternatingBandFills相比,iPhone 4 和 4S的性能很差,即使数据很少,所以我通过改组- plotSpace:didChangePlotRangeForCoordinate:中的数组回到了这个alternatingBandFills: Eric 说过。这是我实施的解决方案:
-(void)plotSpace:(CPTPlotSpace *)space didChangePlotRangeForCoordinate:(CPTCoordinate)coordinate {
if (self.plotSpace.xRange.locationDouble <0) {//area before your xrange origin to pass from 0 to -1 and not 0 to -0
value = value-1;
}
int value = plotSpace.xRange.locationDouble.x/majorInterval;
if (self.currentFillBand != value%2) {
NSArray * array = xaxis.alternatingBandFills;
xaxis.alternatingBandFills = @[array[1], array[0]];
self.currentFillBand = value%2;
}
}
如果您的 globalXRange 比您的 xrange.origin 大/之前,那么当您向后滚动时,您的 xRange.location 将 <0,但 value 变量将从 0 传递到 -0,因此在这种情况下,我将 -1 检索到该值。
注意:在你的 globalXRange 之前,我仍然有一个新的 majorTick 的小问题,我有一个无法修复的洗牌,所以我避免了这种情况。