ios 中实现发光字体文字
@interface IEGlowLabel : UILabel{
CGSize glowOffset;
CGFloat glowAmount;
UIColor *glowColor;
CGColorSpaceRef colorSpaceRef;
CGColorRef glowColorRef;
}
@property (nonatomic, assign) CGSize glowOffset;
@property (nonatomic, assign) CGFloat glowAmount;
@property (nonatomic, retain) UIColor *glowColor;
@end
@implementation IEGlowLabel
@synthesize glowColor, glowOffset, glowAmount;
- (void)setGlowColor:(UIColor *)newGlowColor
{
if (newGlowColor != glowColor) {
[glowColor release];
CGColorRelease(glowColorRef);
glowColor = [newGlowColor retain];
glowColorRef = CGColorCreate(colorSpaceRef, CGColorGetComponents(glowColor.CGColor));
}
}
- (void)initialize {
colorSpaceRef = CGColorSpaceCreateDeviceRGB();
self.glowOffset = CGSizeMake(0.0, 0.0);
self.glowAmount = 15.0;
self.glowColor = [UIColor clearColor];
}
- (void)awakeFromNib {
[self initialize];
}
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if(self != nil) {
[self initialize];
}
return self;
}
- (void)drawTextInRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextSetShadow(context, self.glowOffset, self.glowAmount);
CGContextSetShadowWithColor(context, self.glowOffset, self.glowAmount, glowColorRef);
[super drawTextInRect:rect];
CGContextRestoreGState(context);
}
- (void)dealloc {
CGColorRelease(glowColorRef);
CGColorSpaceRelease(colorSpaceRef);
[glowColor release];
[super dealloc];
}
@end
用法:
IEGlowLabel *glowLabel;
glowLabel.glowColor = waitTimeLabel.textColor;
glowLabel.glowAmount = 15.0;
glowLabel.glowOffset = CGSizeMake(0.0, 0.0);
[glowLabel setText:@"glowLabel"];