Почему моя форма CoreGraphics не показывает границы? - PullRequest
1 голос
/ 21 февраля 2012

Это код, который у меня есть:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);

CGContextSetFillColorWithColor(context, [BUTTON_COLOR CGColor]);
CGContextSetStrokeColorWithColor(context, [[UIColor blackColor] CGColor]);
CGContextSetLineWidth(context, 1);

int radius = CORNER_RADIUS;

CGContextMoveToPoint(context, 0, self.frame.size.height / 2);
CGContextAddLineToPoint(context, POINT_WIDTH, self.frame.size.height);
CGContextAddLineToPoint(context, rect.origin.x + rect.size.width - radius, 
                            rect.origin.y + rect.size.height);
CGContextAddArc(context, rect.origin.x + rect.size.width - radius, 
                    rect.origin.y + rect.size.height - radius, radius, M_PI / 2, 0.0f, 1);
CGContextAddLineToPoint(context, rect.origin.x + rect.size.width, rect.origin.y + radius);
CGContextAddArc(context, rect.origin.x + rect.size.width - radius, rect.origin.y + radius, 
                    radius, 0.0f, -M_PI / 2, 1);
CGContextAddLineToPoint(context, POINT_WIDTH, 0);
CGContextAddLineToPoint(context, 0, self.frame.size.height / 2);

CGContextClosePath(context);
CGContextDrawPath(context, kCGPathFillStroke);

Почему он не рисует границу вокруг фигуры?

РЕДАКТИРОВАТЬ: Теперь он рисует форму, благодаря изменению последней линии, но он рисует дополнительную линию вокруг него, например:

http://cl.ly/0u0e051a060m161u0n08

1 Ответ

3 голосов
/ 21 февраля 2012

Используйте CGContextDrawPath(context, kCGPathFillStroke) вместо CGContextFillPath() и CGContextStrokePath().

Дело в том, что после первого вызова CGContextFillPath() или CGContextStrokePath() путь контекста очищается, поэтому у второго вызова нет пути для работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...