Ios4 NSString drawInRect导致CGContextShowTextAtPoint错误显示文本
我在iOS应用程序中使用CGContextRef创建PDF,以及一些我创建的用于绘制项目(如线条、文本、图像等)的实用方法 我使用以下方法将多行文本字符串绘制到CGContextRef:Ios4 NSString drawInRect导致CGContextShowTextAtPoint错误显示文本,ios4,pdf,nsstring,cgcontext,Ios4,Pdf,Nsstring,Cgcontext,我在iOS应用程序中使用CGContextRef创建PDF,以及一些我创建的用于绘制项目(如线条、文本、图像等)的实用方法 我使用以下方法将多行文本字符串绘制到CGContextRef: - (void)drawTextBlock:(NSString *)theText x:(CGFloat)x y:(CGFloat)y width:(CGFloat)w height:(CGFloat)h { if (theText == nil) { return; }
- (void)drawTextBlock:(NSString *)theText x:(CGFloat)x y:(CGFloat)y width:(CGFloat)w height:(CGFloat)h
{
if (theText == nil)
{
return;
}
UIGraphicsPushContext(pdfContext);
CGContextSaveGState(pdfContext);
CGContextTranslateCTM(pdfContext, 0.0f, PDF_HEIGHT);
CGContextScaleCTM(pdfContext, 1.0f, -1.0f);
[theText drawInRect:PDFCGRectMake(x, 11.0 - y - h, w, h) withFont:[UIFont systemFontOfSize:fontSize]];
CGContextRestoreGState(pdfContext);
UIGraphicsPopContext();
}
这段代码可以很好地用于绘制文本块,但是如果我在执行这段代码后尝试使用CGContextShowTextAtPoint绘制任何其他文本,那么文本就会变得太大,并且颠倒了
如果我在方法末尾添加这一行,则大小会恢复正常,但文本仍然颠倒:
CGContextSetTextMatrix(pdfContext, CGAffineTransformMake(1.0,0.0, 0.0, -1.0, 0.0, 0.0));
我一定是遗漏了什么,看起来原始代码应该保存和恢复上下文状态,足以让绘图正常继续。有什么提示或建议吗?有一个小的打字错误?在代码中,请尝试:
CGContextSetTextMatrix(pdfContext, CGAffineTransformMake(1.0, 0.0, 0.0, 1.0, 0.0, 0.0));
注意-1.0现在是1.0我在另一篇关于反转文本绘图的堆栈溢出文章中发现了该代码。我不确定它究竟是如何工作的,为什么工作的,但它似乎正在做它现在需要做的事情。谢谢