2013-01-05 27 views
6

भरता है नीचे दिया गया कोड एक परिपूर्ण अंडाकार रेडियल ढाल खींचता है, लेकिन इसके दृश्य के कोनों में भरता नहीं है। मैं इसे अंडाकार के किनारे से परे आकर्षित करने के लिए कैसे प्राप्त करूं? दस्तावेज विकल्प kCGGradientDrawsAfterEndLocation है, लेकिन मुझे लगता है कि यह आईओएस में उपलब्ध नहीं है।आईओएस, रेडियल ग्रेडियेंट ड्रा करें जो रीरंगल

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

उत्तर

4

आप अंडाकार करने के लिए ड्राइंग काटा गया है। इससे क्लिपिंग क्षेत्र के बाहर खींचा जा रहा ढाल बंद हो जाता है। उस रेखा को हटाएं जहां आप अंडाकार जोड़ते हैं और संदर्भ को क्लिप करते हैं।

+0

दुह, धन्यवाद सर ... – Mrwolfy