蜡烛图 CandleChartDataEntry 蜡烛图 数据条目 CandleChartDataSet 蜡烛图集合 CandleChartData 蜡烛图数据 CandleChartDataEntry public class CandleChartDataEntry: ChartDataEntry { /// shadow-high value // 最高值 public var high = Double(0.0) /// shadow-low value // 最低值 public var low = Double(0.0) /// close value // 收盘值 public var close = Double(0.0) /// open value // 开盘值 public var open = Double(0.0) public init(xIndex: Int, shadowH: Double, shadowL: Double, open: Double, close: Double) { super.init(value: (shadowH + shadowL) / 2.0, xIndex: xIndex) self.high = shadowH self.low = shadowL self.open = open self.close = close } public init(xIndex: Int, shadowH: Double, shadowL: Double, open: Double, close: Double, data: AnyObject?) { super.init(value: (shadowH + shadowL) / 2.0, xIndex: xIndex, data: data) self.high = shadowH self.low = shadowL self.open = open self.close = close } /// Returns the overall range (difference) between shadow-high and shadow-low. // 最高值和最低值差值 public var shadowRange: Double { return abs(high - low) } /// Returns the body size (difference between open and close). // 开盘与收盘值 之差 public var bodyRange: Double { return abs(open - close) } /// the center value of the candle. (Middle value between high and low) // 高低盘中心 public override var value: Double { get { return super.value } set { super.value = (high + low) / 2.0 } } // MARK: NSCopying public override func copyWithZone(zone: NSZone) -> AnyObject { var copy = super.copyWithZone(zone) as! CandleChartDataEntry copy.high = high copy.high = low copy.high = open copy.high = close return copy } } CandleChartDataSet public class CandleChartDataSet: LineScatterCandleChartDataSet { /// the width of the candle-shadow-line in pixels. /// :default: 3.0 // 高低盘值的宽度 public var shadowWidth = CGFloat(1.5) /// the space between the candle entries /// :default: 0.1 (10%) // 两个条目之间的距离 private var _bodySpace = CGFloat(0.1) /// the color of the shadow line /// 阴影颜色 public var shadowColor: UIColor? /// use candle color for the shadow // 是否使用 蜡烛图的颜色作为阴影颜色 public var shadowColorSameAsCandle = false /// color for open <= close // 跌盘的颜色 public var decreasingColor: UIColor? /// color for open > close // 涨盘的颜色 public var increasingColor: UIColor? /// Are decreasing values drawn as filled? // 跌盘是否填充 public var decreasingFilled = false /// Are increasing values drawn as filled? // 涨盘是否填充 public var increasingFilled = true public override init(yVals: [ChartDataEntry]?, label: String?) { super.init(yVals: yVals, label: label) } internal override func calcMinMax(#start: Int, end: Int) { if (yVals.count == 0) { return } var entries = yVals as! [CandleChartDataEntry] var endValue : Int if end == 0 { endValue = entries.count - 1 } else { endValue = end } _lastStart = start _lastEnd = end _yMin = entries[start].low _yMax = entries[start].high for (var i = start + 1; i <= endValue; i++) { var e = entries[i] if (e.low < _yMin) { _yMin = e.low } if (e.high > _yMax) { _yMax = e.high } } } /// the space that is left out on the left and right side of each candle, /// :default: 0.1 (10%), max 0.45, min 0.0 public var bodySpace: CGFloat { set { _bodySpace = newValue if (_bodySpace < 0.0) { _bodySpace = 0.0 } if (_bodySpace > 0.45) { _bodySpace = 0.45 } } get { return _bodySpace } } /// Is the shadow color same as the candle color? public var isShadowColorSameAsCandle: Bool { return shadowColorSameAsCandle } /// Are increasing values drawn as filled? public var isIncreasingFilled: Bool { return increasingFilled; } /// Are decreasing values drawn as filled? public var isDecreasingFilled: Bool { return decreasingFilled; } } CandleChartData public class CandleChartData: BarLineScatterCandleChartData { public override init() { super.init() } public override init(xVals: [String?]?, dataSets: [ChartDataSet]?) { super.init(xVals: xVals, dataSets: dataSets) } public override init(xVals: [NSObject]?, dataSets: [ChartDataSet]?) { super.init(xVals: xVals, dataSets: dataSets) } }