为iOS图表设置最大缩放

Dum*_*aru 6 ios swift ios-charts

我是编程和swift的新手,所以我有一个问题......如何在iOS图表中设置最大缩放?尝试:

 func setBarChart(dataPoints: [String], humidity: [Double], andDays: Int, forTime: String)
{
    let formato = BarChartFormatter()
    let xaxis  = XAxis()
    var humidityEntry: [BarChartDataEntry] = []

    for i in 0..<dataPoints.count
    {
        let dataEntry = BarChartDataEntry(x: Double(i), y: humidity[i])
        humidityEntry.append(dataEntry)
        formato.getNumberOfDays(Double(i), axis: xaxis, andDays: andDays)
    }

    xaxis.valueFormatter = formato
    let barChartDataSet3 = BarChartDataSet(values: humidityEntry, label: "Humidity")
    barChartDataSet3.setColor(UIColor.cyan)
    barChartDataSet3.barBorderColor = UIColor.blue
    barChartDataSet3.valueTextColor = UIColor.lightText

    barChartView.leftAxis.labelTextColor = UIColor.white
    barChartView.rightAxis.labelTextColor = UIColor.white
    barChartView.leftAxis.labelFont = UIFont.systemFont(ofSize: 11)
    barChartView.rightAxis.labelFont = UIFont.systemFont(ofSize: 11)
    barChartView.scaleYEnabled = false
//        barChartView.setVisibleXRange(minXRange: 0.1, maxXRange: 1.1)
//        barChartView.autoScaleMinMaxEnabled = true
//        barChartView.setVisibleXRange(minXRange: 0.0, maxXRange: 1.0)


    switch forTime {
    case "6months":
        barChartView.setVisibleXRange(minXRange: 0.0, maxXRange: 3.1)
    case "3months":
        barChartView.setVisibleXRange(minXRange: 0.0, maxXRange: 2.1)
    case "1month":
        barChartView.setVisibleXRange(minXRange: 0.0, maxXRange: 1.5)
    case "7days":
        barChartView.setVisibleXRange(minXRange: 0.0, maxXRange: 1.0)
    default:
        break
    }

    if barChartView.xRange >= 1.0 && barChartView.xRange <= 0
    {
        barChartView.scaleXEnabled = false
    }
//        barChartView.setVisibleYRangeMaximum(2.0, axis: YAxis.)
//        barChartView.
//        if barChartView.scaleX > 1.3
//        {
//            barChartView.notifyDataSetChanged()
//            barChartView.scaleXEnabled = false
//        }
//        barChartView.notifyDataSetChanged()
//        barChartView.scaleXEnabled =
    barChartView.highlightFullBarEnabled = false

    var dataSets = [IChartDataSet]()
    dataSets.append(barChartDataSet3)

    let lineChartDataTemp = BarChartData(dataSets: dataSets)
    barChartView.legend.font = UIFont.systemFont(ofSize: 14)
    barChartView.legend.textColor = UIColor.white
    barChartView.xAxis.valueFormatter = xaxis.valueFormatter
    barChartView.data = lineChartDataTemp
    barChartView.animate(xAxisDuration: 2.0, yAxisDuration: 2.0)

}
Run Code Online (Sandbox Code Playgroud)

但没有任何作用,有时候我可以放大到无限,其他时候它只是显示我奇怪的放大图.

Has*_*sya 5

嗨,杜米特鲁·罗戈吉纳鲁,

barChartView.setVisibleXRange(minXRange: 1, maxXRange: 3)
Run Code Online (Sandbox Code Playgroud)

此方法和描述可在图表类文件中的 BarLineChartViewBase.swift 中找到。

/// Limits the maximum and minimum value count that can be visible by pinching and zooming.
/// e.g. minRange=10, maxRange=100 no less than 10 values and no more that 100 values can be viewed
/// at once without scrolling

public func setVisibleXRange(minXRange minXRange: CGFloat, maxXRange: CGFloat)
{
    let maxScale = _deltaX / minXRange
    let minScale = _deltaX / maxXRange
    _viewPortHandler.setMinMaxScaleX(minScaleX: minScale, maxScaleX: maxScale)
}
Run Code Online (Sandbox Code Playgroud)

请参阅 - https://github.com/danielgindi/Charts/issues/1820

我希望这能帮到您。