【问题标题】:Core plot alternatingBandFills "jumps" when scrolling horizontally水平滚动时,核心情节交替BandFills“跳跃”
【发布时间】:2013-10-22 08:52:36
【问题描述】:

我有一个简单的带有 xAxis 交替带填充的核心图

xAxis.alternatingBandFills        = [NSArray arrayWithObjects:[bandFillColor colorWithAlphaComponent:0.1], [NSNull null], nil];

效果:

现在,当我水平滚动(向左平移)时,当 0 到 10 之间的 x 区域移到可视范围之外的左侧时,填充颜色会“跳跃”,而 10 到 20 会突出显示( 20 到 30 会变成白色,依此类推)。

有没有办法让乐队在滚动时保持原样?

【问题讨论】:

    标签: ios core-plot


    【解决方案1】:

    现在,使用绘图空间委托来监控绘图空间的变化并根据需要调整填充颜色。我在 Core Plot 问题跟踪器中添加了 issue 601,请求提供一项功能来简化此操作。

    【讨论】:

    • 您能解释一下解决方法吗?我不知道如何调整填充颜色以及使用哪些方法。谢谢
    • 使用绘图空间委托来监控绘图空间的变化。实现-plotSpace:didChangePlotRangeForCoordinate: 委托方法。每次更改后,检查绘图范围并根据需要随机排列 alternatingBandFills 数组。
    • 感谢您的精确,我让它几乎可以工作我使用模数来根据我的主要时期检测订单,但是当向右或向后滚动时我无法让它完美地工作......你能做一个吗测试,让它工作似乎不是微不足道的......如果我不能使用这个功能,我将使用条形图作为解决方法。
    【解决方案2】:

    作为一种解决方法,我在可见屏幕上实现了一些 BarPlot,但与 alternatingBandFills 相比,iPhone 4 和 4S 上的 性能 很差,即使非常数据很少,所以我通过 shuffle 中的数组返回到这个alternatingBandFills - plotSpace:didChangePlotRangeForCoordinate: 有 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 将是

    注意:在你的 globalXRange 之前,我仍然有一个新的 majorTick 的小问题,我有一个无法修复的洗牌,所以我避免了这种情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      相关资源
      最近更新 更多