我有一个场景,我将不得不在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作为Glyph,我能够获得角色的路径。但实现的路径是通过角色的边界。因此,我得到的文字是:
这可以成一行吗?
答案 0 :(得分:2)
即使看起来字母S被画成一定宽度的线条,但事实并非如此。如果你仔细观察,那么你会看到线宽变化。它实际上是一个由它的轮廓定义的复杂图形结构。如果你使用带衬线的字体,那就更明显了。因此,没有文本行宽度。
最好的解决方案可能是使用不同的字体,其外观就像使用窄笔绘制一样。我不确定iOS上是否预装了这样的字体。