2015-01-18 2 views
0

Я могу легко изменить цвет фона UIToolbar благодаря свойству Bart Tint в Interface Builder. Тем не менее, я хотел бы использовать простой двухцветный вертикальный градиент в качестве фона.Установите простой градиент цвета в качестве фона UIToolbar

Решение должно работать с любой настраиваемой высотой панели инструментов, а моей целью является iOS 7+. Если это необходимо сделать программно, то оба объекта Objective-C и Swift приветствуются.

Редактировать: основываясь на ответах, которые я делаю это в viewDidLoad, но это не имеет никакого эффекта:

var gradient = CAGradientLayer() 
gradient.frame = toolbar.bounds 
gradient.colors = [UIColor.redColor(), UIColor.greenColor()] 
toolbar.layer.insertSublayer(gradient, atIndex: 0) 

Edit 2: основываясь на ответах, я заменил следующую линию, но она до сих пор не дает никакого эффекта:

gradient.colors = [UIColor.redColor().CGColor, UIColor.greenColor().CGColor] 

Редактировать 3: Я получил его. Сначала мне нужно было установить «Bar Tint» в «Default» в Interface Builder, чтобы оттенок был прозрачным и не скрывал программно добавленный слой градиента.

ответ

2

Для этого вы можете использовать CAGradientLayer.

Objective C:

CAGradientLayer *gradient = [CAGradientLayer layer]; 
gradient.frame   = yourToolbar.bounds; 
gradient.colors   = [NSArray arrayWithObjects:(id)[[UIColor redColor] CGColor], (id)[[UIColor greenColor] CGColor], nil]; 
[yourToolbar.layer insertSublayer:gradient atIndex:0]; 

Swift:

var gradient:CAGradientLayer = CAGradientLayer() 
gradient.frame    = yourToolbar.bounds 
gradient.colors    = [UIColor.redColor().CGColor, UIColor.greenColor().CGColor] 
yourToolbar.layer.insertSublayer(gradient, atIndex: 0) 
+0

Я использую Swift и не могу найти «слой» под «CAGradientLayer», и я не могу найти, что «слой» свойство (я имею в виду в первую строку коды) – cprcrack

+0

Заменил его с ' var gradient = CAGradientLayer() '. Компилирует, но все равно не работает. – cprcrack

+0

Нет, но он компилируется, так что это не проблема. В любом случае я попытался импортировать его на всякий случай, и результат будет таким же. – cprcrack

2

Это работает

var gradient:CAGradientLayer = CAGradientLayer() 
    gradient.frame = self.toolbar.bounds 
    gradient.colors = [UIColor.redColor().CGColor, UIColor.greenColor().CGColor] 
    self.toolbar.layer.insertSublayer(gradient, atIndex: 0) 
+0

Я попробовал (включая '.CGColor'), и он, похоже, не работает. – cprcrack

+0

Вы пробовали свой код с UIToolbar в iOS 7+ или это просто общее решение? Потому что почему-то это не работает для меня. – cprcrack

+0

Я пытаюсь использовать симулятор iOS 8.1. Нет проблем. Просто barebone-проект с UIToolbar. – kcome

0

// Используйте этот код:

= 2;

 leftColor = [UIColor colorWithRed:0.03 green:0.20 blue:0.95 alpha:1.0]; 
rightColor = [UIColor colorWithRed:0.98 green:0.00 blue:0.89 alpha:1.0]; 
gradient.frame = self.font_imageview.bounds; 
gradient.colors = [NSArray arrayWithObjects: 
        (id)[rightColor CGColor], 
        (id)[UIColor clearColor].CGColor, 
        (id)[leftColor CGColor],nil]; 

[font_imageview.layer insertSublayer:gradient atIndex:0]; 

gradient.startPoint = CGPointMake(0.0, 0.5); 
gradient.endPoint = CGPointMake(1.0, 0.5);} 
Смежные вопросы