2014-06-06 4 views
0

다음 코드를 viewDidLoad에서 실행 중이며 텍스트가 아닌 레이블 외부에 광선을 적용하고 있습니다. 제발 조언. Label http://i61.tinypic.com/2hpu1p4.pngUILabel 텍스트 광선을 만들 수 없습니다.

 lbl_score.font = myfont; 
    lbl_score.alpha = 1.0; 
    lbl_score.textColor = UIColor.greenColor; 
    lbl_score.layer.shadowColor = [[UIColor blueColor] CGColor]; 
    lbl_score.layer.shadowOffset = CGSizeMake(0.0, 0.0); 
    lbl_score.layer.shadowRadius = 30.0f; 
    lbl_score.layer.shadowOpacity = 0.9; 
    lbl_score.layer.masksToBounds = NO; 

나는. 난 단지 레이블 텍스트에 빛을 적용 할 것 "QuartzCore/QuartzCore.h을 가져온.

감사

답변

0

당신은 레이어에 그림자를 가하고 있습니다을 , 사각형입니다 UILabelshadowColorshadowOffset 속성을 사용해야합니다.이 방법으로 그림자에 대해 별도의 불투명도를 설정할 수는 없지만 그림자 색으로 전달하는 UIColor으로 구울 수 있습니다.

lbl_score.font = myfont; 
lbl_score.alpha = 1.0; 
lbl_score.textColor = UIColor.greenColor; 
lbl_score.shadowColor = [[UIColor blueColor] colorWithAlphaComponent:0.9]; 
lbl_score.shadowOffset = CGSizeMake(0.0, 0.0); 

불행히도 이런 식으로 그림자 반경을 설정할 수 없습니다. 반경을 변경해야하는 경우 대신 -drawRect:에서 나만의 맞춤형 그림을보세요.

1

레이블의 실제 텍스트에 광선을 적용하려면 레이블 자체에 drawTextInRect을 무시해야합니다. 사각형의 레이블 레이어에 그림자를 설정하고 있습니다.

오버라이드는 매우 간단합니다. 내가 jrturton 유사한 코드를 발견

-(void)drawTextInRect:(CGRect)rect 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSaveGState(context); 

    CGContextSetShadowWithColor(context, CGSizeZero, 30.0, [UIColor blueColor].CGColor); 

    [super drawTextInRect:rect]; 

    CGContextRestoreGState(context); 
} 
+0

감사 jrturon! – Santhu

0

하지만, 더 커스터마이징 : 당신은 다음 그래픽 컨텍스트를 복원, 슈퍼 전화, 그래픽스 문맥을 조정합니다. 이것은 나를 위해 일하고있다.

DTGlowingLabel.h

@interface DTGlowingLabel : UILabel { 
} 

@end 

DTGlowingLabel.m

#import "DTGlowingLabel.h" 

@implementation DTGlowingLabel 

- (void) drawRect:(CGRect)rect 
{ 
CGContextRef ctx = UIGraphicsGetCurrentContext(); 

UIColor *insideColor = [UIColor colorWithRed:69.0/255.0 green:254.0/255.0 blue:0 alpha:1]; 
UIColor *outlineColor = [UIColor colorWithRed:22.0/255.0 green:145.0/255.0 blue:0 alpha:0.8]; 
UIColor *blurColor = [UIColor colorWithRed:104.0/255.0 green: 248.0/255.0 blue:0 alpha:0.7]; 

CGContextSetStrokeColorWithColor(ctx, outlineColor.CGColor); 
CGContextSetFillColorWithColor(ctx, insideColor.CGColor); 
CGContextSetLineWidth(ctx, self.font.pointSize/60.0); 
CGContextSetShadowWithColor(ctx, CGSizeMake(0, 0), self.font.pointSize/10.0, blurColor.CGColor); 
CGContextSetTextDrawingMode(ctx, kCGTextFillStroke); 

[self.text drawInRect:self.bounds withFont:self.font lineBreakMode:self.lineBreakMode alignment:self.textAlignment]; 

} 

@end 

출처 : http://www.cocoanetics.com/2010/01/uilabels-with-neon-effect/

관련 문제