无法使UILabel文本发光

时间:2014-06-06 12:15:31

标签: ios objective-c ios7 uilabel

我在viewDidLoad中运行以下代码,它将标签外部的光晕应用于文本上。请指教。 Label http://i61.tinypic.com/2hpu1p4.png

     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"。我想仅在标签文字上应用光晕。

由于

3 个答案:

答案 0 :(得分:1)

要将光晕应用于标签中的实际文本,您必须覆盖标签本身上的drawTextInRect。您在标签的图层上设置了一个阴影,这是一个矩形。

覆盖非常简单。您只需调整图形上下文,调用super,然后恢复图形上下文:

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

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

    [super drawTextInRect:rect];

    CGContextRestoreGState(context);
}

答案 1 :(得分: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:中查看自己的自定义绘图。

答案 2 :(得分:0)

我发现代码类似于jrturton,但有更多自定义。 这对我有用。

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/