为标签添加阴影

时间:2012-02-22 13:47:02

标签: iphone ios xcode uilabel

我需要标签为 enter image description here

我创建了一个标签子类。我把代码编写为,

- (void)drawRect:(CGRect)rect
{
    [super drawRect:rect];

    UIColor * textColor = [UIColor colorWithRed:57.0/255.0 green:100.0/255.0 blue:154.0/255.0 alpha:1.0];

    CGContextRef c = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(c, 3.5);
    CGContextSetLineJoin(c, kCGLineJoinRound);

    CGContextSetTextDrawingMode(c, kCGTextFillStroke);;
    self.textColor = [UIColor whiteColor];
    [super drawTextInRect:rect];

    CGContextSetTextDrawingMode(c, kCGTextFill);
    self.textColor = textColor;
 // self.shadowColor = [UIColor colorWithRed:11.0/255.0 green:63.0/255.0 blue:126.0/255.0 alpha:1.0];
  //self.shadowOffset = CGSizeMake(0.5, -0.5);
    [super drawTextInRect:rect];

}

通过这个我得到蓝色文本和白色轮廓到那个文本。但我需要得到深蓝色调。我怎样才能做到这一点? 请帮帮我。

3 个答案:

答案 0 :(得分:1)

你应该看一下CGContextSetShadowWithColor方法。

CGContextSetShadowWithColor (
           context,
           shadowSize,
           shadowBlur,
           color
        );

我在本网站上发现了一篇可以帮助您的文章:http://majicjungle.com/blog/191/

修改

以下代码有效:

- (void)drawRect:(CGRect)rect
{

    UIColor * textColor = [UIColor colorWithRed:57.0/255.0 green:100.0/255.0 blue:154.0/255.0 alpha:1.0];

    CGContextRef c = UIGraphicsGetCurrentContext();
    //save the context before add shadow otherwise the shadow will appear for both stroke and fill
    CGContextSaveGState(c);

    //this is where I add the shadow, and it works
    CGContextSetShadowWithColor(c, CGSizeMake(2, 2), 3, [[UIColor grayColor] CGColor]);

    CGContextSetLineWidth(c, 3.5);
    CGContextSetLineJoin(c, kCGLineJoinRound);

    CGContextSetTextDrawingMode(c, kCGTextStroke);;
    self.textColor = [UIColor whiteColor];
    [super drawTextInRect:rect];

    //restore the context to clear the shadow
    CGContextRestoreGState(c);
    CGContextSetTextDrawingMode(c, kCGTextFill);
    self.textColor = textColor;
    [super drawTextInRect:rect];
}

答案 1 :(得分:0)

您是否尝试使用标准的石英属性,如:

label.layer.shadowColor
label.layer.shadowOffset

(您需要在项目中使用QuartzCore框架并导入标题)。

答案 2 :(得分:0)

看看Drop Shadow in DrawRect

在接受的答案中有一个开源链接,根据评论,您可以在那里找到答案。它正在使用drawRect ...