2012-12-04 11 views

Odpowiedz

9
- (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); 
} 

Chociaż nie mogę powiedzieć, że jest mniej gadatliwy niż udar & wypełnienie oddzielnych połączeń ...

+0

Hmm ... bardzo prawdziwe, ja po prostu iść z oddzielnych połączeń Przypuszczam. Dzięki. – chinabuffet

-1

CGContextDrawPath robi to samo, jeśli wcześniej ustawisz kolor wypełnienia i obrysu.

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetStrokeColor(context, a); 
CGContextSetFillColor(context, b); 
CGContextDrawPath(context, rect) 
+8

Hmm ... podpis 'CGContextDrawPath' widzę w pliku nagłówka jest:' CGContextDrawPath (CGContextRef c, tryb CGPathDrawingMode) ' – chinabuffet

6

Jeśli jesteś po prostu patrząc w celu zaoszczędzenia miejsca linii, można zdefiniować swoje własną metodę wykonywania dwóch wywołań i umieszczania jej w klasie narzędziowej.

void strokeAndFill(CGContextRef c, CGRect rect) 
{ 
    CGContextFillRect(c, rect); 
    CGContextStrokeRect(c, rect); 
}