尝试理解为什么使用CGContextShowTextAtPoint绘制的图像质量较低?请参见附图:
字母"W"是使用CGContextShowTextAtPoint在CALayer上绘制的,看起来非常像素化。旁边的按钮是标准按钮,如预期的那样高分辨率。我希望文本绘制能够高清晰度。
尝试理解为什么使用CGContextShowTextAtPoint绘制的图像质量较低?请参见附图:
字母"W"是使用CGContextShowTextAtPoint在CALayer上绘制的,看起来非常像素化。旁边的按钮是标准按钮,如预期的那样高分辨率。我希望文本绘制能够高清晰度。
默认情况下,CALayer 并不以Retina屏幕的更高分辨率呈现其Quartz 内容。您可以使用以下代码启用此功能:
if ([layer respondsToSelector:@selector(setContentsScale:)])
{
layer.contentsScale = [[UIScreen mainScreen] scale];
}
这不仅会影响文本渲染,还会影响CALayer内的所有Quartz绘制,因此您需要为所有具有自定义Quartz内容的图层执行此操作。
您是否使用CGContextScaleCTM?当使用图形上下文时,可以尝试以下方法:
CGFloat scale = [[UIScreen mainScreen] scale];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextScaleCTM(context, scale, scale);
myTextLayer.shouldRasterize = false
。 - Matt H.