3

我有一个场景,我必须在 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 作为字形,我能够得到字符的路径。但是实现的路径是通过角色的边界。因此,我得到的文本为:

在此处输入图像描述

这可以做成单行吗?

4

1 回答 1

2

即使看起来字母 S 好像被画成一条具有一定宽度的线,但事实并非如此。如果你仔细观察,你会发现线宽是变化的。它实际上是一个由其轮廓定义的复杂图形结构。如果您使用带有衬线的字体,则更加明显。因此,没有文本行宽之类的东西。

最好的解决方案可能是使用不同的字体,看起来好像是用一支细笔绘制的。我不确定 iOS 上是否预装了这样的字体。

于 2012-12-07T09:37:05.610 回答