diff --git a/Charts/Classes/Charts/PieChartView.swift b/Charts/Classes/Charts/PieChartView.swift index d1d3feabb0..bb46b33ca8 100755 --- a/Charts/Classes/Charts/PieChartView.swift +++ b/Charts/Classes/Charts/PieChartView.swift @@ -25,6 +25,7 @@ public class PieChartView: PieRadarChartViewBase private var _circleBox = CGRect() private var _drawXLabelsEnabled = true + private var _drawXLabelsMinimumAngle: CGFloat = 0 /// array that holds the width of each pie-slice in degrees private var _drawAngles = [CGFloat]() @@ -514,6 +515,19 @@ public class PieChartView: PieRadarChartViewBase } } + public var drawSliceTextMinimumAngle: CGFloat + { + get + { + return _drawXLabelsMinimumAngle + } + set + { + _drawXLabelsMinimumAngle = newValue + setNeedsDisplay() + } + } + /// - returns: true if drawing x-values is enabled, false if not public var isDrawSliceTextEnabled: Bool { diff --git a/Charts/Classes/Renderers/PieChartRenderer.swift b/Charts/Classes/Renderers/PieChartRenderer.swift index 64844fd2e4..7bd8520767 100755 --- a/Charts/Classes/Renderers/PieChartRenderer.swift +++ b/Charts/Classes/Renderers/PieChartRenderer.swift @@ -297,6 +297,7 @@ public class PieChartRenderer: ChartDataRendererBase let yValueSum = (data as! PieChartData).yValueSum let drawXVals = chart.isDrawSliceTextEnabled + let drawSliceTextMinimumAngle = chart.drawSliceTextMinimumAngle let usePercentValuesEnabled = chart.usePercentValuesEnabled var angle: CGFloat = 0.0 @@ -359,10 +360,10 @@ public class PieChartRenderer: ChartDataRendererBase let sliceXBase = cos(transformedAngle * ChartUtils.Math.FDEG2RAD) let sliceYBase = sin(transformedAngle * ChartUtils.Math.FDEG2RAD) - let drawXOutside = drawXVals && xValuePosition == .OutsideSlice - let drawYOutside = drawYVals && yValuePosition == .OutsideSlice - let drawXInside = drawXVals && xValuePosition == .InsideSlice - let drawYInside = drawYVals && yValuePosition == .InsideSlice + let drawXOutside = sliceAngle > drawSliceTextMinimumAngle && drawXVals && xValuePosition == .OutsideSlice + let drawYOutside = sliceAngle > drawSliceTextMinimumAngle && drawYVals && yValuePosition == .OutsideSlice + let drawXInside = sliceAngle > drawSliceTextMinimumAngle && drawXVals && xValuePosition == .InsideSlice + let drawYInside = sliceAngle > drawSliceTextMinimumAngle && drawYVals && yValuePosition == .InsideSlice if drawXOutside || drawYOutside { diff --git a/ChartsDemo/Classes/Demos/PieChartViewController.m b/ChartsDemo/Classes/Demos/PieChartViewController.m index fa8813611e..913a4272bc 100644 --- a/ChartsDemo/Classes/Demos/PieChartViewController.m +++ b/ChartsDemo/Classes/Demos/PieChartViewController.m @@ -35,6 +35,7 @@ - (void)viewDidLoad self.options = @[ @{@"key": @"toggleValues", @"label": @"Toggle Y-Values"}, @{@"key": @"toggleXValues", @"label": @"Toggle X-Values"}, + @{@"key": @"toggleXValuesMinimumAngle", @"label": @"Toggle X-Values Minimum Angle"}, @{@"key": @"togglePercent", @"label": @"Toggle Percent"}, @{@"key": @"toggleHole", @"label": @"Toggle Hole"}, @{@"key": @"animateX", @"label": @"Animate X"}, @@ -49,6 +50,7 @@ - (void)viewDidLoad [self setupPieChartView:_chartView]; _chartView.delegate = self; + _chartView.drawSliceTextMinimumAngle = 20; _sliderX.value = 3.0; _sliderY.value = 100.0; @@ -117,7 +119,7 @@ - (void)setDataCount:(int)count range:(double)range pFormatter.percentSymbol = @" %"; [data setValueFormatter:pFormatter]; [data setValueFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:11.f]]; - [data setValueTextColor:UIColor.whiteColor]; + [data setValueTextColor:UIColor.blackColor]; _chartView.data = data; [_chartView highlightValues:nil]; @@ -133,6 +135,17 @@ - (void)optionTapped:(NSString *)key return; } + if ([key isEqualToString:@"toggleXValuesMinimumAngle"]) + { + if (_chartView.drawSliceTextMinimumAngle == 0){ + _chartView.drawSliceTextMinimumAngle = 20; + } else { + _chartView.drawSliceTextMinimumAngle = 0; + } + + return; + } + if ([key isEqualToString:@"togglePercent"]) { _chartView.usePercentValuesEnabled = !_chartView.isUsePercentValuesEnabled;