CGContextDrawRadialGradient
アルファフェードを行う球体を作成するために使用できUIColor.clearColor
、それが機能します。
しかし、私はこのタイプのことをやろうとしています:
いくつかの戦略的な球体を配置すると興味深い効果が得られますが (戦略的な場所に LED バックライトを配置するのと同様)、本当の輝きを得たいと思っています。で角丸長方形の周りにグローを描くにはどうすればよいdrawRect
ですか?
CGContextDrawRadialGradient
アルファフェードを行う球体を作成するために使用できUIColor.clearColor
、それが機能します。
しかし、私はこのタイプのことをやろうとしています:
いくつかの戦略的な球体を配置すると興味深い効果が得られますが (戦略的な場所に LED バックライトを配置するのと同様)、本当の輝きを得たいと思っています。で角丸長方形の周りにグローを描くにはどうすればよいdrawRect
ですか?
を使用して任意のパスの周りにグロー効果を作成できますが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
ください。