diff --git a/PNChart/PNPieChart.h b/PNChart/PNPieChart.h index 204afb53..665c8653 100644 --- a/PNChart/PNPieChart.h +++ b/PNChart/PNPieChart.h @@ -65,4 +65,7 @@ - (void)recompute; +/** highlights sector **/ +-(void)highlightSectorAtIndex:(NSInteger)index; + @end diff --git a/PNChart/PNPieChart.m b/PNChart/PNPieChart.m index 07154677..3850d325 100644 --- a/PNChart/PNPieChart.m +++ b/PNChart/PNPieChart.m @@ -293,7 +293,7 @@ - (void)didTouchAt:(CGPoint)touchLocation if ([self.delegate respondsToSelector:@selector(didUnselectPieItem)]) { [self.delegate didUnselectPieItem]; } - [self.sectorHighlight removeFromSuperlayer]; + // [self.sectorHighlight removeFromSuperlayer]; return; } @@ -307,52 +307,55 @@ - (void)didTouchAt:(CGPoint)touchLocation [self.delegate userClickedOnPieIndexItem:index]; } - if (self.shouldHighlightSectorOnTouch) + if (self.shouldHighlightSectorOnTouch) { + [self highlightSectorAtIndex:index]; + + } +} + +-(void)highlightSectorAtIndex:(NSInteger)index { + if (!self.enableMultipleSelection) { + if (self.sectorHighlight) + [self.sectorHighlight removeFromSuperlayer]; + } + + PNPieChartDataItem *currentItem = [self dataItemForIndex:index]; + + CGFloat red,green,blue,alpha; + UIColor *old = currentItem.color; + [old getRed:&red green:&green blue:&blue alpha:&alpha]; + alpha /= 2; + UIColor *newColor = [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; + + CGFloat startPercentage = [self startPercentageForItemAtIndex:index]; + CGFloat endPercentage = [self endPercentageForItemAtIndex:index]; + + self.sectorHighlight = [self newCircleLayerWithRadius:_outerCircleRadius + 5 + borderWidth:10 + fillColor:[UIColor clearColor] + borderColor:newColor + startPercentage:startPercentage + endPercentage:endPercentage]; + + if (self.enableMultipleSelection) { - if (!self.enableMultipleSelection) + NSString *dictIndex = [NSString stringWithFormat:@"%d", index]; + CAShapeLayer *indexShape = [self.selectedItems valueForKey:dictIndex]; + if (indexShape) { - if (self.sectorHighlight) - [self.sectorHighlight removeFromSuperlayer]; - } - - PNPieChartDataItem *currentItem = [self dataItemForIndex:index]; - - CGFloat red,green,blue,alpha; - UIColor *old = currentItem.color; - [old getRed:&red green:&green blue:&blue alpha:&alpha]; - alpha /= 2; - UIColor *newColor = [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; - - CGFloat startPercentage = [self startPercentageForItemAtIndex:index]; - CGFloat endPercentage = [self endPercentageForItemAtIndex:index]; - - self.sectorHighlight = [self newCircleLayerWithRadius:_outerCircleRadius + 5 - borderWidth:10 - fillColor:[UIColor clearColor] - borderColor:newColor - startPercentage:startPercentage - endPercentage:endPercentage]; - - if (self.enableMultipleSelection) - { - NSString *dictIndex = [NSString stringWithFormat:@"%d", index]; - CAShapeLayer *indexShape = [self.selectedItems valueForKey:dictIndex]; - if (indexShape) - { - [indexShape removeFromSuperlayer]; - [self.selectedItems removeObjectForKey:dictIndex]; - } - else - { - [self.selectedItems setObject:self.sectorHighlight forKey:dictIndex]; - [_contentView.layer addSublayer:self.sectorHighlight]; - } + [indexShape removeFromSuperlayer]; + [self.selectedItems removeObjectForKey:dictIndex]; } else { + [self.selectedItems setObject:self.sectorHighlight forKey:dictIndex]; [_contentView.layer addSublayer:self.sectorHighlight]; } } + else + { + [_contentView.layer addSublayer:self.sectorHighlight]; + } } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event