简体   繁体   中英

iOS: Draw text on UIView with LineWidth 1px

I have a scenario where I will have to draw a text on a UIView. For which my code is

- (void)drawRect:(CGRect)iRect {
    [super drawRect:iRect];
    CGContextRef aContext = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(aContext, [[UIColor greenColor] CGColor]);
    [@"s" drawInRect:CGRectMake(0, 0, iRect.size.width, iRect.size.height) withFont:[UIFont systemFontOfSize:500] lineBreakMode:NSLineBreakByCharWrapping alignment:NSTextAlignmentCenter];
  }

With this code I can achieve:

在此输入图像描述

However, since I'm using a FontSize of 500, the text lineWidth is big. I would like to reduce the lineWidth to 1px.

Please advice on how to achieve this.

  • Is there another method apart from the conventional drawInRect .
  • Will CoreText help me get the solution

Thanks.

EDIT

Using UIBezierPath for the Glyph, I was able to get the Path of the Character. But the path that is achieved is through the border of the character. hence, I get the text as:

在此输入图像描述

Can this be made a single line ?

Even though it looks as if the letter S is drawn as a line of a certain width, that's not the case. If you look closer, then you'll see that the line width varies. It's in fact a complex graphical construct defined by it's outline. It's even more obvious if you use a font with serifs. As a consequence, there is no such thing as a text line width.

The best solution probably is to use a different font that has the look as if it was drawn using a narrow pen. I'm not sure if such a font is preinstalled on iOS.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM