1

CGContextDrawRadialGradientアルファフェードを行う球体を作成するために使用できUIColor.clearColor、それが機能します。

しかし、私はこのタイプのことをやろうとしています:

ここに画像の説明を入力

いくつかの戦略的な球体を配置すると興味深い効果が得られますが (戦略的な場所に LED バックライトを配置するのと同様)、本当の輝きを得たいと思っています。で角丸長方形の周りにグローを描くにはどうすればよいdrawRectですか?

4

1 に答える 1

2

を使用して任意のパスの周りにグロー効果を作成できますがCGContextSetShadowWithColor、外観を正確に制御することはできません。特に、デフォルトの影はかなり明るいです:

デフォルトの影

そして、それを暗くする唯一の方法は、それ自体の上に再度描画することです。

ここに画像の説明を入力

最適ではありませんが、必要なものにかなりよく近似しています。

これらの画像は、次によって生成されましたdrawRect

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGMutablePathRef path = CGPathCreateMutable();

    int padding = 20;
    CGPathMoveToPoint(path, NULL, padding, padding);
    CGPathAddLineToPoint(path, NULL, rect.size.width - padding, rect.size.height / 2);
    CGPathAddLineToPoint(path, NULL, padding, rect.size.height - padding);

    CGContextSetShadowWithColor(context, CGSizeZero, 20, UIColor.redColor.CGColor);
    CGContextSetFillColorWithColor(context, UIColor.blueColor.CGColor);

    CGContextAddPath(context, path);
    CGContextFillPath(context);
    // CGContextAddPath(context, path);
    // CGContextFillPath(context);

    CGPathRelease(path);
}

覚えておくべきことの 1 つは、ぼやけた影のレンダリングにはかなりの負荷がかかるということです。これは、ビューが再描画される頻度によって問題になる場合とそうでない場合があります。影をアニメートする必要がない場合は、影を にUIImage一度レンダリングして、結果を に表示することを検討してUIImageViewください。

于 2012-04-09T22:38:10.153 に答える