iOS:UILabel,每个文本字母周围都有边框

时间:2011-06-28 18:32:09

标签: ios uilabel

我正在尝试在每个文字字母周围绘制边框/轮廓,以帮助文本脱颖而出。阴影对我来说做得不够。我查看了另一个问题,但它使用Quartz只在文本字段轮廓周围绘制边框,而不是文本本身。是否有一种相对简单的方法可以为文本添加边框,或者为文本添加多组阴影?

3 个答案:

答案 0 :(得分:3)

当您将阴影应用于标签时,每个字母都会获得它周围的阴影。这就是说,默认情况下,在分组表中绘制节标题以便看起来是浮雕的。

所以,就像你能做的那样

label.layer.shadowColor ...
etc

你可以做到

label.layer.borderColor = [UIColor redColor].CGColor;
label.layer.borderWidth = 2;

我没有尝试过这个,但理论上它应该有效。有些情况我遇到过这些事情并不总是起作用或工作的方式与在某些情况下的预期不同。阴影就是一个很好的例子,实际上是标签。我曾经期望在标签上添加阴影将其应用于标签的rect周围。但事实上,它适用于标签中的每个字母!不是我的预期,但事后才非常方便。

无论如何,试一试。如果它不起作用,并且它实际上是你想要的每个字母周围的“边框”,你可能必须使用具有非常对比色(从文本颜色)到实现你想要的亮点。

请使用任何这些图层效果,您需要

#import <QuartzCore/QuartzCore.h>
祝你好运!报告回来。 : - )

编辑:如果您只想在标签周围使用矩形边框,则必须在UIView中嵌入标签,并使用视图的layer.borderXXX属性(如上所示)将边框应用于该边框。

答案 1 :(得分:3)

您可以继承UILabel类并覆盖drawInRect方法:

- (void)drawRect:(CGRect)rect {

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSaveGState(context);

    CGContextSetLineWidth(context, 2);
    CGContextSetLineJoin(context, kCGLineJoinRound);

    CGContextSetTextDrawingMode(context, kCGTextStroke);

    [self drawTextInRect:rect];
}

答案 2 :(得分:1)

否则你可以创建一个UILable的子类,并在drawRect方法中绘制你想要的任何东西

您可以使用以下行来查找文字宽度和高度

CGSize textSize = [[self text] sizeWithFont:[self font]];
    [[UIColor blackColor] set];
CGFloat strikeWidth = textSize.width;
    CGFloat strikeHeight=textSize.height;