Как нарисовать этот точный градиент на iPhone? - PullRequest
1 голос
/ 02 февраля 2010

Рассматриваемый градиент Рисунок 8-5 из Руководства по программированию в Quartz 2D, "Радиальный градиент, который изменяется между точкой и окружностью".

Я пытаюсь создать объект 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 предоставила исходный код для каждого примера! >: (* ​​1008 *

1 Ответ

1 голос
/ 02 февраля 2010

ОБНОВЛЕНИЕ: Эти значения цвета добавляют затенение поверх другого содержимого (от точки к кругу):

CGFloat colors[] =
{
    0.0f, 0.0f, 0.0f, 0.0f,
    0.0f, 0.0f, 0.0f, 0.75f
};

Использование этих значений цвета довольно близко (рисование от точки до круга):

CGFloat colors[] =
{
    0.0f, 1.0f, 1.0f, 1.0f,
    0.0f, 0.0f, 0.0f, 0.75f
};
...