Вопрос:

Создание фоновых градиентов для вида программно? Как?

iphone cocoa-touch ios4 uinavigationbar quartz-graphics

2188 просмотра

1 ответ

2043 Репутация автора

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

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

Автор: skålfyfan Источник Размещён: 12.02.2011 05:53

Ответы (1)


3 плюса

3002 Репутация автора

Решение

Простое переопределение сообщения 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.

Автор: Victor Размещён: 12.02.2011 06:02
Вопросы из категории :
32x32