2013-01-05 15 views
6

Poniższy kod rysuje idealny eliptyczny gradient radialny, ale nie wypełnia jego wierzchołków. Jak mogę go wyciągnąć poza krawędź elipsy? Udokumentowana opcja to kCGGradientDrawsAfterEndLocation, ale myślę, że nie jest dostępna w ios.iOS, Narysuj gradient radialny, który wypełnia rekultywację

- (void)drawRect:(CGRect)rect 
{ 
    CGFloat colors [] = { 
     0.2, 0.2, 0.2, 1.0, 
     0.0, 0.0, 0.0, 1.0 
    }; 
    CGColorSpaceRef baseSpace = CGColorSpaceCreateDeviceRGB(); 
    CGGradientRef gradient = CGGradientCreateWithColorComponents(baseSpace, colors, NULL, 2); 
    CGColorSpaceRelease(baseSpace), baseSpace = NULL; 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSaveGState(context); 
    CGContextAddEllipseInRect(context, rect); 
    CGContextClip(context); 
    CGContextDrawRadialGradient(context, gradient, self.center, 0, self.center, self.frame.size.width, kCGGradientDrawsAfterEndLocation); 
    CGGradientRelease(gradient), gradient = NULL; 
    CGContextRestoreGState(context); 
} 

enter image description here

Odpowiedz

4

pan obcięty rysunku do elipsy. To zatrzyma gradient narysowany poza obszarem obcinania. Usuń linię, do której dodajesz elipsę i przycinasz kontekst.

+0

duh, dziękuję, proszę pana ... – Mrwolfy