我有一个场景,我将不得不在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
之外,还有另一种方法。 谢谢。
编辑
使用UIBezierPath作为字形,我能够获得角色的路径。但是实现的途径是通过角色的边界。因此,我得到的文本是:
可以将其做成一行吗?
最佳答案
即使看起来字母S被绘制为一定宽度的线,事实并非如此。如果您仔细观察,则会发现线宽有所不同。实际上,它是由轮廓定义的复杂图形结构。如果您使用带有衬线的字体,则更加明显。结果,没有诸如文本行宽之类的东西。
最好的解决方案可能是使用看起来像使用窄笔绘制的其他字体。我不确定iOS上是否预装了这种字体。