2013-01-05 18 views
6

以下のコードは、完全な楕円形の放射状グラデーションを描画しますが、ビューのコーナーを埋めるものではありません。どのようにして楕円の端を越えて描画するのですか?文書化されたオプションはkCGGradientDrawsAfterEndLocationですが、iosでは使用できません。iOS、扇形を塗りつぶす放射状のグラデーション

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

duh、thanks sir ... – Mrwolfy

関連する問題