iOS:使用LineWidth 1px在UIView上绘制文本

时间:2012-12-07 09:28:56

标签: ios drawrect core-text uibezierpath drawtext

我有一个场景,我将不得不在UIView上绘制文本。我的代码是

- (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];
  }

使用此代码我可以实现:

enter image description here

但是,由于我使用的FontSize为500,因此文本lineWidth很大。 我想将lineWidth减少到1px。

请告知如何实现这一目标。

  • 除了传统的drawInRect之外还有其他方法。
  • CoreText会帮我解决问题吗

感谢。

修改

使用UIBezierPath作为Glyph,我能够获得角色的路径。但实现的路径是通过角色的边界。因此,我得到的文字是:

enter image description here

这可以成一行吗?

1 个答案:

答案 0 :(得分:2)

即使看起来字母S被画成一定宽度的线条,但事实并非如此。如果你仔细观察,那么你会看到线宽变化。它实际上是一个由它的轮廓定义的复杂图形结构。如果你使用带衬线的字体,那就更明显了。因此,没有文本行宽度。

最好的解决方案可能是使用不同的字体,其外观就像使用窄笔绘制一样。我不确定iOS上是否预装了这样的字体。