UILabel 中的阴影

shadow in UILabel

我尝试使用以下代码对 UILabel 进行子类化..但无法获得类似于

的外观
- (void) drawRect:(CGRect)rect {
    CGSize myShadowOffset = CGSizeMake(4, -4);
    CGFloat myColorValues[] = {0, 0, 0, .8};

    CGContextRef myContext = UIGraphicsGetCurrentContext();
    CGContextSaveGState(myContext);

    CGColorSpaceRef myColorSpace = CGColorSpaceCreateDeviceRGB();
    CGColorRef myColor = CGColorCreate(myColorSpace, myColorValues);
    CGContextSetShadowWithColor (myContext, myShadowOffset, 5, myColor);

    self.layer.shadowOffset = CGSizeMake(0, 1);
    self.layer.shadowOpacity = 0.5;
    self.shadowColor = [UIColor blackColor];

    [super drawTextInRect:rect];

    CGColorRelease(myColor);
    CGColorSpaceRelease(myColorSpace);

    CGContextRestoreGState(myContext);
}

UILabel class默认有阴影属性。

levelLbl.shadowColor = [[UIColor blackColor] colorWithAlphaComponent:1]; levelLbl.shadowOffset = CGSizeMake(2, 2);

P.S。对于像上图这样的阴影,您必须将 shadowRadius 设置为 layer

P.S.2 如果您不使用 Xcode 6 或更高版本,请不要忘记 #import <QuartzCore/QuartzCore.h>

self.layer.shadowOffset = CGSizeMake(0, -2.5);
self.layer.shadowRadius = 1;
self.layer.shadowOpacity = 0.5;
self.layer.shadowColor = [UIColor blackColor].CGColor;