添加贝塞尔路径CGPath:的ObjectiveC

问题描述:

我使用的drawRect方法绘制一个矩形。添加贝塞尔路径CGPath:的ObjectiveC

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGRect outline = CGRectMake(4, 4, width - 8, height - 8); 

CGColorRef white = [[UIColor whiteColor] CGColor]; 
CGColorRef black = [[UIColor blackColor] CGColor]; 

CGContextSetFillColorWithColor(context, white); 
CGContextFillEllipseInRect(context, outline); 

CGContextSetLineWidth(context, 2.0f); 
CGContextSetStrokeColorWithColor(context, black); 
CGContextStrokeEllipseInRect(context, outline); 

我在samedrawn RECT方法绘制的贝塞尔路径。

[[UIColor blackColor] setStroke]; 
[[UIColor whiteColor] setFill]; 

UIBezierPath * path = [UIBezierPath bezierPath]; 
[path moveToPoint:point1]; 
[path addQuadCurveToPoint:point3 controlPoint:point2]; 
[path addQuadCurveToPoint:point5 controlPoint:point4]; 
[path setLineWidth:2.0f]; 
[path stroke]; 
[path fill]; 

我需要在这两个形状上添加一个CALayer,使它们看起来像一个。

aPath = CGPathCreateMutable(); 
CGPathAddEllipseInRect(aPath, nil, outline); 
CGPathCloseSubpath(aPath); 

pathCopy = CGPathCreateCopyByTransformingPath(aPath, nil); 

myLayer = nil; 
myLayer = [CAShapeLayer layer]; 
myLayer.path = pathCopy; 
myLayer.fillColor = [[UIColor whiteColor] CGColor]; 

[self.layer addSublayer:myLayer]; 

问题是我不能将贝塞尔路径添加到CGPath。那是一个。 另一个是我不能添加边框颜色或边框宽度到我创建的图层。谁能帮忙?

+0

为什么你需要这个图层?你为什么使用'CGPathCreateCopyByTransformingPath'?你看过'CGPathAddPath'吗? – Wain

+0

是的,我有。但我不知道如何使用该方法将贝塞尔路径添加到cgpath。 –

尝试:

CGPathAddPath(aPath, nil, path.CGPath); 

哪里aPath是你的可变CGPathpath是你UIBezierPath

+0

哇,我会尝试一下,让你知道。 –

+0

谢谢。有效。 –