我有一个自定义的UIView,它可以生成某种需要用数字表示高度的图表。
所有的绘图都正常,当使用quartz2d创建圆等时,它可以正确地消除锯齿。
然而,当我想要在上下文中绘制一个NSString时,字体平滑/抗锯齿就搞砸了。
禁用消除锯齿确实会导致文本变细,因此开关会起作用,但是消除锯齿的文本会变得很满。它看起来一点也不像在iOS中呈现的普通文本那样清晰。
CGContextSetAllowsAntialiasing(context, YES);
CGContextSetShouldAntialias(context, YES);
CGContextSetShouldSmoothFonts(context, YES);
NSString *stringValue = [NSString stringWithFormat:@"%d", input.height];
UIFont *font = [UIFont systemFontOfSize:textsize];
[stringValue drawAtPoint:CGPointMake(x, y) withFont:font];
我对如何解决这个字体渲染问题一无所知。有什么想法吗?
发布于 2012-01-09 16:39:42
我对这个问题的解决方案是使用正确的坐标以编程方式添加几个UILabel
。这些UILabel
实例完美地呈现了文本,所以这解决了我的问题。
发布于 2011-06-28 02:39:18
如果您愿意放弃文本上的抗锯齿功能,您可以在打开抗锯齿功能的情况下保存上下文。
GCContextSaveGState(context);
关闭抗锯齿并渲染文本:
GCContextSetShouldAntialias(context, NO);
NSString *stringValue = [NSString stringWithFormat:@"%d", input.height];
UIFont *font = [UIFont systemFontOfSize:textSize];
[stringValue drawAtPoint:CGPointMake(x, y) withFont:font];
然后将图形上下文恢复到它以前的空间。(启用抗锯齿功能)以渲染绘图的其余部分。
CGContextRestoreGState(context);
https://stackoverflow.com/questions/5184767
复制