2017-09-18 16 views
0

dr-Charts API를 사용하여 응용 프로그램에 막대 그래프를 그립니다. 에서 BarChart.m 그래서

enter image description here
UIBezierPath - 모서리가 둥근 직사각형

:

BarChart *barChartView = [[BarChart alloc] initWithFrame:CGRectMake(0, 150, WIDTH(self.view), HEIGHT(self.view) - 600)]; 
[barChartView setDataSource:self]; 
[barChartView setDelegate:self]; 
[barChartView setLegendViewType:LegendTypeHorizontal]; 
[barChartView setShowCustomMarkerView:TRUE]; 
[barChartView drawBarGraph]; 

[barChartView setDrawGridY:TRUE]; 
[barChartView setDrawGridX:FALSE]; 

[self.view addSubview:barChartView]; 

는 사실, 난 내 막대 차트 사각형 둥근 RECT이 비슷한 되고 싶어 : 나는 막대 그래프 그리기 해요

- (UIBezierPath *)drawBarPathWithStartPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint{ 
    UIBezierPath *path = [UIBezierPath bezierPathWithRect:CGRectMake(startPoint.x, startPoint.y, endPoint.x - startPoint.x, endPoint.y - startPoint.y)]; 
    //UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(startPoint.x, startPoint.y, endPoint.x - startPoint.x, endPoint.y - startPoint.y) byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(10, 10)]; 
    [path stroke]; 

    return path; 
} 

     CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init]; 
     [shapeLayer setPath:[[self drawBarPathWithStartPoint:endPoint endPoint:startPoint] CGPath]]; 
     [shapeLayer setStrokeColor:[barData.barColor CGColor]]; 
     [shapeLayer setFillColor:[barData.barColor CGColor]]; 
     [shapeLayer setFillRule:kCAFillRuleEvenOdd]; 
     [shapeLayer setLineWidth:0.5f]; 
     [shapeLayer setOpacity:0.7f]; 
     [shapeLayer setShadowRadius:0.0f]; 
     [shapeLayer setShadowColor:[[UIColor clearColor] CGColor]]; 
     [shapeLayer setShadowOpacity:0.0f]; 
     [shapeLayer setValue:[barData.yAxisArray objectAtIndex:i] forKey:@"data"]; 
:
, 나는 API CAShapeLayer & UIBezierPath와 함께 연주하기 시작

StackOverflow에서 많은 답을 찾은 후에 성공하지 못했습니다. 내가
shapeLayer.cornerRadius = 10;
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(startPoint.x, startPoint.y, endPoint.x - startPoint.x, endPoint.y - startPoint.y) byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(10, 10)];

처럼 많은 답변을 시도 당신은 도움을 주시기 바랍니다 수 없습니다.

+0

는 예를 들어 https://stackoverflow.com/questions/36174991/ios-uiimageview-border-white-with-radius-display이 ​​참조 -a-strange-dark-line-in-4-corne/36176242 # 36176242 –

+0

@ Anbu.Karthik 답장을 보내 주셔서 감사합니다. 'bezierPathWithRoundedRect'를 적용한 후에, 나는 이상한 [출력] (https://imgur.com/BjvNj7O)을보고있다. –

+0

해당 n 번 여러 번 호출 –

답변

0

보십시오 예를 들어, 모서리가 둥근 넓은 라인을 그릴

UIBezierPath *linePath = [UIBezierPath bezierPath]; 
[linePath moveToPoint:CGPointMake(topX, topY)]; 
[linePath addLineToPoint:CGPointMake(bottomX, bottomY)]; 

CAShapeLayer *line = [CAShapeLayer layer]; 
line.frame = some_frame; 
line.lineCap = kCALineCapRound; 
line.path = linePath.CGPath; 
line.fillColor = nil; 
line.lineWidth = 6.0; 
line.cornerRadius = 3.0; 
line.opacity = 1.0; 
line.strokeColor = [UIColor greenColor].CGColor; 
[line setMasksToBounds:YES];