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)