問題の勾配は、Quartz 2D プログラミング ガイドの図 8-5 、「点と円の間で変化する放射状勾配」です。
次のように CGGradient オブジェクト (CGShading オブジェクトではなく、問題になる可能性があります) を構築しようとしています。
CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
CGFloat colors[] =
{
0, 0, 0, 0.9,
0, 0, 0, 0
};
CGGradientRef gradient = CGGradientCreateWithColorComponents(rgb, colors, NULL, sizeof(colors)/(sizeof(colors[0])*sizeof(CGFloat)));
CGContextClipToRect(context, rect);
CGContextDrawRadialGradient(context, gradient, startCenter, startRadius, endCenter, endRadius, gradientDrawingOptions);
CGGradientRelease(gradient);
CGColorSpaceRelease(rgb);
もちろん、それは正確ではありません。中心点と半径は正しいですが、実際のグラデーションは同じに見えません。Apple が各例のソース コードを提供してくれればよかったのにと思います。>:(