我有一个场景,我将不得不在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];
  }

使用此代码,我可以实现:

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

请提供有关如何实现此目标的建议。
  • 除了传统的drawInRect之外,还有另一种方法。
  • CoreText可以帮助我获得解决方案吗

  • 谢谢。

    编辑

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

    可以将其做成一行吗?

    最佳答案

    即使看起来字母S被绘制为一定宽度的线,事实并非如此。如果您仔细观察,则会发现线宽有所不同。实际上,它是由轮廓定义的复杂图形结构。如果您使用带有衬线的字体,则更加明显。结果,没有诸如文本行宽之类的东西。

    最好的解决方案可能是使用看起来像使用窄笔绘制的其他字体。我不确定iOS上是否预装了这种字体。

    07-24 09:47
    查看更多