2013-07-16 6 views
1

У меня есть прямоугольник, нарисованный с использованием метода 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

Да, у меня есть. Но я не знаю, как добавить путь bezier к cgpath, используя этот метод. –

ответ

3

Try:

CGPathAddPath(aPath, nil, path.CGPath); 

Где aPath ваш изменчивый CGPath и path Ваш UIBezierPath.

+0

Вау, я попробую и дам вам знать. –

+0

Спасибо. Это сработало. –

Смежные вопросы