ios-图表 Swift 的图表 - 故意 bleed/overflow 图表栏

ios-charts Charts for Swift - purposely bleed/overflow chart bars

我正在使用一个条形图,我试图让它看起来像一个设计。该设计的条形在底部有点溢出,并且上面有透明度渐变。我找不到任何可用于此的 属性,我想我将不得不覆盖某处。我还尝试在图表顶部的条形 positions/bounds 上绘制图层,但没有成功。

我尝试覆盖 BarChartRenderer 并更改 Y 轴位置,但由于默认情况下图表应该是 "scrollable",因此它会剪裁条形图。 我已经禁用了 scrolling/moving/zooming 功能,因为我不需要它们:

doubleTapToZoomEnabled = false
highlightPerDragEnabled = false
highlightPerTapEnabled = false
clipValuesToContentEnabled = false

您可以设置最小轴值,以便它设置正确的底线试试这个代码

barChartView.leftAxis.axisMinimum = __Your minimum bar value__ i.e. 17000 //that is mention in your above graph

通过在条上绘制我自己的图层然后移除旧条,因为它们 anti-aliasing 解决了这个问题。这样也可以更轻松地实现渐变,并且它可以工作,因为您将无法 move/scale 图表。

    let bottomY = self.contentRect.maxY - leftAxis.gridLineWidth
    for (_, bar) in self.barData!.dataSets.enumerated() {
        let layer = CALayer(),
        barBounds = self.getBarBounds(entry: bar.entryForIndex(0)! as! BarChartDataEntry),
        // 30 extra height at bottom
        frame = CGRect(x: barBounds.minX, y: barBounds.minY, width: barBounds.width, height: (bottomY - barBounds.minY) + 30)
        // Set the new frame size, Z position and background
        layer.frame = frame
        layer.zPosition = 10
        layer.backgroundColor = bar.color(atIndex: 0).cgColor
        // Add the new bar layer and remove old bar
        self.layer.addSublayer(layer)
        bar.clear()
    }