2013-01-05 33 views
6

Aşağıdaki kod, mükemmel bir eliptik radyal gradyan çizer, ancak görünümünün köşelerini doldurmaz. Elipsin kenarının ötesine nasıl çekerim? Belgelenen seçenek kCGGradientDrawsAfterEndLocation, ancak ios'da mevcut olmadığını düşünüyorum.iOS, Recrangle'ı dolduran radyal gradyanı çiz

- (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

cevap

4

Sen elips çizimi derlemiş. Bu, kırpma alanının dışında çizilen degradeyi durdurur. Elipsi eklediğiniz çizgiyi kaldırın ve bağlamı kırpın.

+0

duh, teşekkürler efendim ... – Mrwolfy