を使用して「サンバースト」パターンをUIView
プログラムで描画する があります。ここで、エッジをグラデーションでマスキングしてこれを拡張したいと思います。効果的に各「バースト」を不透明から透明にフェードさせます。これはマスクでできると思いますが、円形にする方法がわかりません。UIBezierPath
CAGradientLayer
これは私が試していることです-ビューをマスクしますが、グラデーションは線形です:
CAGradientLayer *l = [CAGradientLayer layer];
l.frame = CGRectMake(0.0f, 0.0f, rect.size.width, rect.size.height);
l.cornerRadius = rect.size.width/2.0f;
l.masksToBounds = YES;
l.colors = [NSArray arrayWithObjects:(id)[UIColor blackColor].CGColor, (id)[UIColor clearColor].CGColor, nil];
self.layer.mask = l;
CAGradientLayer
エッジがぼやけた円でビューをマスクする他の方法を誰かが知っている場合、私は使用しないことにオープンです。
解決策
マットの洞察のおかげで、私は を使用してマスク ビューをCGContextDrawRadialGradient
描画し、それを としてレンダリングし、UIImage
それをマスク レイヤーとして使用することになりました。このプロセスに興味がある人は、このテスト プロジェクトで使用されています。