如何截断x值?

时间:2020-10-06 03:21:45

标签: ios swift ios-charts

iOS图表库似乎存在一个问题,即如果蜡烛图上的x值太大,则蜡烛将呈现为非常细长的形状,甚至在屏幕上几乎不可见。我正在根据以下时间在图表中添加时间间隔:

let dateFormatter = DateFormatter()
        dateFormatter.locale = Locale(identifier: "en_US_POSIX")
        dateFormatter.dateFormat = "yyyy-MM-dd"

        let minuteFormatter = DateFormatter()
        minuteFormatter.locale = Locale(identifier: "en_US_POSIX")
        minuteFormatter.dateFormat = "HH:mm"

        for dictionary in response.value as! [[String:Any]] {

            var timeInterval = TimeInterval(0)
            if let minute = dictionary["minute"] as? String {
                timeInterval = minuteFormatter.date(from: minute)!.timeIntervalSince1970
            } else {
            // convert Date to TimeInterval (typealias for Double)
                timeInterval = dateFormatter.date(from: dictionary["date"] as! String)!.timeIntervalSince1970
            }
            // convert to Integer
            let myInt = Int(timeInterval )

            let entry = CandleChartDataEntry(x: Double(myInt), shadowH: dictionary["high"] as? Double ?? 0.00, shadowL: dictionary["low"] as? Double ?? 0.00, open: dictionary["open"] as? Double ?? 0.00, close: dictionary["close"] as? Double ?? 0.00, icon: nil)
            vals.append(entry)

            i += 1
        }

在一个实例中,时间间隔是一个时间(hh:MM),在另一个实例中,它可以是一个日期(YYYY-MM-DD)。然后,我在这里相应地格式化它们:

class ChartValueFormatter: NSObject, IAxisValueFormatter {

var timeFrame : Int = 0

func stringForValue(_ value: Double, axis: AxisBase?) -> String {

    if timeFrame == 0 {

        let minuteFormatter = DateFormatter()
        minuteFormatter.locale = Locale(identifier: "en_US_POSIX")
        minuteFormatter.dateFormat = "HH:mm"

        let date = Date(timeIntervalSince1970: value)

        return minuteFormatter.string(from: date)
    } else if timeFrame != 0 {

        let dateFormatter = DateFormatter()
        dateFormatter.locale = Locale(identifier: "en_US_POSIX")
        dateFormatter.dateFormat = "yyyy-MM-dd"



        let date = Date(timeIntervalSince1970: value)

        return dateFormatter.string(from: date)

    } else {
        return ""
    }
}

}

如何可靠,轻松地独特地截断x值,以便固定图表,但仍将其转换回适当的标签(并在标签上显示正确的时间/日期)?

谢谢。

0 个答案:

没有答案
相关问题