Charles D'Monte
Charles D'Monte

Reputation: 372

Adding Bezier path to CGPath: ObjectiveC

I have a rectangle drawn using drawRect method.

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);

I have a bezier path drawn in the samedrawn rect method.

[[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];

I need to add a CALayer over these two shapes so that they appear as one.

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];

The problem is that I cant add the bezier path to the CGPath. That's one. Another one is that I cant add a border color or border width to the layer which I am creating. Can anyone help?

Upvotes: 2

Views: 2909

Answers (1)

Wain
Wain

Reputation: 119031

Try:

CGPathAddPath(aPath, nil, path.CGPath);

Where aPath is your mutable CGPath and path is your UIBezierPath.

Upvotes: 4

Related Questions