2013-05-11 2 views
2

UILabel에 배경 그라디언트를 추가하려면 다음 코드를 사용합니다.UILabel add GradientLayer

그래디언트를 사용하기 전에 UILabel이 다음과 같이 표시됩니다. 이제

WithOut Gradient

, 나는 다음 코드를 사용하여 그라디언트를 추가 할 수 있습니다.

CAGradientLayer *gradLayer=[CAGradientLayer layer]; 
    gradLayer.frame=self.myView.layer.bounds; 
    [gradLayer setColors:[NSArray arrayWithObjects:(id)([UIColor redColor].CGColor), (id)([UIColor cyanColor].CGColor),nil]]; 
    gradLayer.endPoint=CGPointMake(1.0, 0.0); 

    [self.myView.layer addSublayer:gradLayer]; 

다음은 UILabel이지만 텍스트는 없습니다.

With Gradient

나는 또한 UILabel의 층하지만 성공의 맨 아래에있는 레이어를 추가하려고합니다.

[self.myView.layer insertSublayer:gradLayer atIndex:0]; 
+0

시도가보기의 하위 뷰 같은 레이블을 추가 한 후보기로 그라데이션을 추가합니다. 라벨의 색상을'[UIColor clearColor]'로 설정하면 그라디언트와 텍스트가 나타나야합니다. – kmikael

+0

그래서 말하자면, 하나는 UILabel에 그라디언트를 설정할 수 없습니다. 당신이 말한대로, 불필요하게 UIView를 추가하고 그라디언트를 설정 한 다음 UILabel을 추가해야합니다. 좋은데, 객체의 도입은 많은 UILabel이 추가 될 경우 메모리 풋 프린트를 증가시킬 것입니다. – weber67

+0

'UILabel'당 하나의 평범한 UIView가 메모리에 많은 영향을 미치지 않을 것이라고 생각합니다. – kmikael

답변

5

당신은 아마 대신 다른있는 UIView의 상단에 라벨을 설정해야합니다 :

UIView *labelBackground = [[UIView alloc] initWithFrame:self.label.frame]; 
self.label.backgroundColor = [UIColor clearColor]; 
self.label.frame = self.label.bounds; 

CAGradientLayer *gradLayer=[CAGradientLayer layer]; 
gradLayer.frame = labelBackground.layer.bounds; 
[gradLayer setColors:[NSArray arrayWithObjects:(id)([UIColor redColor].CGColor), (id)([UIColor cyanColor].CGColor),nil]]; 
gradLayer.endPoint=CGPointMake(1.0, 0.0); 

[labelBackground.layer addSublayer:gradLayer]; 

[labelBackground addSubview:self.label]; 

[self.view addSubview:labelBackground];