diff --git a/Charts/Classes/Data/CandleChartDataSet.swift b/Charts/Classes/Data/CandleChartDataSet.swift index ad1c2b11df..b285bfc64d 100644 --- a/Charts/Classes/Data/CandleChartDataSet.swift +++ b/Charts/Classes/Data/CandleChartDataSet.swift @@ -28,6 +28,9 @@ public class CandleChartDataSet: BarLineScatterCandleChartDataSet /// the color of the shadow line public var shadowColor: UIColor? + /// use candle color for the shadow + public var makeShadowSameColorAsCandle = false + /// color for open <= close public var decreasingColor: UIColor? diff --git a/Charts/Classes/Renderers/CandleStickChartRenderer.swift b/Charts/Classes/Renderers/CandleStickChartRenderer.swift index 7747fa8c9b..7e35f66680 100644 --- a/Charts/Classes/Renderers/CandleStickChartRenderer.swift +++ b/Charts/Classes/Renderers/CandleStickChartRenderer.swift @@ -98,7 +98,20 @@ public class CandleStickChartRenderer: ChartDataRendererBase // draw the shadow - CGContextSetStrokeColorWithColor(context, (dataSet.shadowColor ?? dataSet.colorAt(j)).CGColor) + var shadowColor = dataSet.shadowColor ?? dataSet.colorAt(j) + if (dataSet.makeShadowSameColorAsCandle) + { + if (e.open > e.close) + { + shadowColor = dataSet.decreasingColor ?? dataSet.colorAt(j) + } + else if (e.open < e.close) + { + shadowColor = dataSet.increasingColor ?? dataSet.colorAt(j) + } + } + + CGContextSetStrokeColorWithColor(context, shadowColor.CGColor) CGContextStrokeLineSegments(context, _shadowPoints, 2) @@ -112,9 +125,14 @@ public class CandleStickChartRenderer: ChartDataRendererBase trans.rectValueToPixel(&_bodyRect) // draw body differently for increasing and decreasing entry - if (e.open >= e.close) + + if (e.open == e.close) + { + CGContextSetStrokeColorWithColor(context, shadowColor.CGColor) + CGContextStrokeRect(context, _bodyRect) + } + else if (e.open > e.close) { - var color = dataSet.decreasingColor ?? dataSet.colorAt(j) if (dataSet.isDecreasingFilled) diff --git a/ChartsDemo/Classes/Demos/CandleStickChartViewController.m b/ChartsDemo/Classes/Demos/CandleStickChartViewController.m index dc9687bd8b..1cfe23d8ab 100644 --- a/ChartsDemo/Classes/Demos/CandleStickChartViewController.m +++ b/ChartsDemo/Classes/Demos/CandleStickChartViewController.m @@ -42,6 +42,7 @@ - (void)viewDidLoad @{@"key": @"saveToGallery", @"label": @"Save to Camera Roll"}, @{@"key": @"togglePinchZoom", @"label": @"Toggle PinchZoom"}, @{@"key": @"toggleAutoScaleMinMax", @"label": @"Toggle auto scale min/max"}, + @{@"key": @"toggleMakeShadowSameColorAsCandle", @"label": @"Toggle shadow same color"}, ]; _chartView.delegate = self; @@ -208,6 +209,16 @@ - (void)optionTapped:(NSString *)key _chartView.autoScaleMinMaxEnabled = !_chartView.isAutoScaleMinMaxEnabled; [_chartView notifyDataSetChanged]; } + + if ([key isEqualToString:@"toggleMakeShadowSameColorAsCandle"]) + { + for (CandleChartDataSet *set in _chartView.data.dataSets) + { + set.makeShadowSameColorAsCandle = !set.makeShadowSameColorAsCandle; + } + + [_chartView notifyDataSetChanged]; + } } #pragma mark - Actions