2015-01-18 12 views
0

Interface Builder의 Bart Tint 속성 덕분에 UIToolbar 배경색을 쉽게 변경할 수 있습니다. 그러나 배경으로 간단한 2 색 수직 그라디언트를 사용하고 싶습니다.간단한 색상 그라데이션을 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) 

편집 2이 : 답변에 따라, 나는 다음 줄을 교체를하지만,

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

편집 3 : 그것은 여전히 ​​영향을하지 않습니다 겠어요. 먼저 Interface Builder에서 "Bar Tint"를 "Default"로 설정해야 색조가 투명 해지고 프로그래밍 방식으로 추가 된 그라디언트 레이어가 숨겨지지 않았습니다.

답변

2

이것을 달성하려면 CAGradientLayer을 사용할 수 있습니다.

목적 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]; 

스위프트 :

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

내가 스위프트를 사용하고 있는데 "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

iOS 7 이상의 UIToolbar로 코드를 사용해 보셨나요? 아니면 일반적인 해결책일까요? 웬일인지 그것이 나를 위해 일하지 않기 때문에. – cprcrack

+0

iOS 8.1 시뮬레이터에서 테스트 중입니다. 문제 없어. UIToolbar를 사용한 단지 barebone 프로젝트. – kcome

0

가 //이 코드 사용하여 작동합니다

I = 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);}