我在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"。我想仅在标签文字上应用光晕。
由于
答案 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)
您正在为图层添加阴影,该图层为矩形。 UILabel
有shadowColor
和shadowOffset
属性,您应该使用这些属性。您不能以这种方式为阴影设置单独的不透明度,但您可以将其烘焙到为阴影颜色传递的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/