2015-01-26 8 views
0

Objective-C에 UIBezierPath를 그려 빨간색으로 채 웁니다. 이제 비율을 기준으로 여러 색상으로 경로를 채우고 싶습니다. 예를 들어, 경로를 20 % 녹색으로 채우고 나머지 80 %를 빨간색으로 채우고 싶은 경우 (그래디언트가 아님). 또한 채우기와 획 사이에 몇 픽셀 간격을두고 싶습니다.iOS - 백분율을 기준으로 여러 색상의 베 지어 패스 채우기

나는 이러한 것들을 어떻게 달성 할 수 있을지 모른다. 아무도 내가 이것을 성취하거나 올바른 방향으로 나를 가리킬 수 있음을 알고 있습니까?

미리 감사드립니다. 여기

UIBezierPath* bezierPath = UIBezierPath.bezierPath; 
[bezierPath moveToPoint: CGPointMake(50, 50)]; 
[bezierPath addLineToPoint: CGPointMake(60, 90)]; 
[bezierPath addLineToPoint: CGPointMake(80, 90)]; 
[bezierPath addLineToPoint: CGPointMake(90, 50)]; 

bezierPath.lineCapStyle = kCGLineCapRound; 
bezierPath.lineJoinStyle = kCGLineJoinBevel; 

[UIColor.redColor setFill]; 
[bezierPath fill]; 
[UIColor.blackColor setStroke]; 
bezierPath.lineWidth = 4; 
[bezierPath stroke]; 
+1

귀하의 질문은 불분명하다. 초록색 20 %와 빨간색 80 %를 혼합 한 단일 색상으로 채우기를 원하십니까? 또는 경로 안의 픽셀 중 20 %를 녹색으로 채우고 나머지 80 %는 빨간색으로 채우고 싶습니까? –

+0

죄송합니다. 녹색의 경로 안에있는 픽셀의 20 %를 채우고 나머지 픽셀의 80 %는 빨간색으로 채우고 싶습니다 – user3767163

답변

1

는이 작업을 수행 할 수있는 방법, 나는 5 부 각 20 %로 경로를 구분했다.

enter image description here

UIBezierPath* bezierPath = UIBezierPath.bezierPath; 
[bezierPath moveToPoint: CGPointMake(50, 50)]; 
[bezierPath addLineToPoint: CGPointMake(60, 90)]; 
[bezierPath addLineToPoint: CGPointMake(80, 90)]; 
[bezierPath addLineToPoint: CGPointMake(90, 50)]; 

bezierPath.lineCapStyle = kCGLineCapRound; 
bezierPath.lineJoinStyle = kCGLineJoinBevel; 

[UIColor.redColor setFill]; 
bezierPath.lineWidth = 4; 
[bezierPath stroke]; 
[bezierPath addClip]; 

CGRect boundingBox = CGPathGetBoundingBox(bezierPath.CGPath); 

CGRect firstTwentyPercent = CGRectMake(boundingBox.origin.x, 
             boundingBox.origin.y + boundingBox.size.height - 0.2 * boundingBox.size.height, 
             boundingBox.size.width, 
             0.2 * boundingBox.size.height); 
[[UIColor greenColor] setFill]; 
UIRectFill(firstTwentyPercent); 

CGRect secondTwentyPercent = CGRectMake(boundingBox.origin.x, 
             boundingBox.origin.y + boundingBox.size.height - 0.4 * boundingBox.size.height, 
             boundingBox.size.width, 
             0.2 * boundingBox.size.height); 
[[UIColor blueColor] setFill]; 
UIRectFill(secondTwentyPercent); 


CGRect thirdTwentyPercent = CGRectMake(boundingBox.origin.x, 
             boundingBox.origin.y + boundingBox.size.height - 0.6 * boundingBox.size.height, 
             boundingBox.size.width, 
             0.2 * boundingBox.size.height); 
[[UIColor redColor] setFill]; 
UIRectFill(thirdTwentyPercent); 


CGRect fourthTwentyPercent = CGRectMake(boundingBox.origin.x, 
             boundingBox.origin.y + boundingBox.size.height - 0.8 * boundingBox.size.height, 
             boundingBox.size.width, 
             0.2 * boundingBox.size.height); 
[[UIColor cyanColor] setFill]; 
UIRectFill(fourthTwentyPercent); 

CGRect fifthTwentyPercent = CGRectMake(boundingBox.origin.x, 
             boundingBox.origin.y, 
             boundingBox.size.width, 
             0.2 * boundingBox.size.height); 
[[UIColor orangeColor] setFill]; 
UIRectFill(fifthTwentyPercent); 
+0

대단히 감사합니다! 채우기 색상과 획 사이에 약간의 여백을 얻을 수있는 방법을 알고 있습니까? – user3767163

+0

작성 후 경로를 두 번 스트로크하십시오. 큰 선 너비와 흰색 획 색상으로 선을 그립니다. 그런 다음 좁은 선 폭과 검은 색 획 색상으로 선을 그립니다. –

+0

대단히 감사합니다! – user3767163