Создание фоновых градиентов для вида программно? Как? - PullRequest
1 голос
/ 12 февраля 2011

У меня есть маленький вид с несколькими кнопками на нем.Я хочу сделать этот маленький фон просмотра черным градиентом, идентичным градиенту, когда вы устанавливаете UINavigation bar в Black Opaque?

Возможно ли это программно или мне нужно постараться в Photoshop, чтобы скопировать его?:)

1 Ответ

3 голосов
/ 12 февраля 2011

Простое переопределение сообщения drawRect для UIView и рисования фона:

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    GContextDrawLinearGradient(context, self.gradientLayer, CGPointMake(0.0, 0.0),
                            CGPointMake(0.0, self.frame.size.height), kCGGradientDrawsBeforeStartLocation);
}

Для создания и кэширования градиента используйте этот фрагмент (компоненты цвета, которые вы должны использовать самостоятельно).

- (CGGradientRef)gradientLayer
{
    if (_gradientLayer == nil)
    {
        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
        CGFloat locations[] = { 0.0, 1.0 };
        CGFloat colors[] = { 0.0 / 255.0, 0.0 / 255.0, 48.0 / 255.0, 1.00, 26.0 / 255.0, 48.0 / 255.0, 89.0 / 255.0, 1.00 };

        _gradientLayer = CGGradientCreateWithColorComponents(colorSpace, colors, locations, sizeof(colors) / (sizeof(colors[0]) * 4));
        CGColorSpaceRelease(colorSpace);
    }
    return _gradientLayer;
}

И, конечно же, не забудьте выпустить свой градиент в dealloc.

...