Core graphics нарисуйте прямоугольник с границей в одной строке
Как я могу нарисовать прямоугольник с границей в одной строке?
есть отдельные методы, такие как:
CGContextStrokeRect(context, someRectangle);
и
CGContextFillRect(context, someRectangle);
но есть ли что-то, что делает оба в одном?
3 ответов
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGPathRef path = CGPathCreateWithRect(rect, NULL);
[[UIColor redColor] setFill];
[[UIColor greenColor] setStroke];
CGContextAddPath(context, path);
CGContextDrawPath(context, kCGPathFillStroke);
CGPathRelease(path);
}
хотя, я не могу сказать, что это менее многословно, чем инсульт и заполнение отдельных вызовов...
Если вы просто хотите сэкономить место в строке, вы можете определить свой собственный метод для выполнения двух вызовов и поместить его в служебный класс.
void strokeAndFill(CGContextRef c, CGRect rect)
{
CGContextFillRect(c, rect);
CGContextStrokeRect(c, rect);
}
CGContextDrawPath делает это один раз, если вы заранее установите цвет заливки и Штриха.
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColor(context, a);
CGContextSetFillColor(context, b);
CGContextDrawPath(context, rect)