我需要标签为
我创建了一个标签子类。我把代码编写为,
- (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];
}
通过这个我得到蓝色文本和白色轮廓到那个文本。但我需要得到深蓝色调。我怎样才能做到这一点? 请帮帮我。
答案 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)
在接受的答案中有一个开源链接,根据评论,您可以在那里找到答案。它正在使用drawRect
...