Ios4 NSString drawInRect导致CGContextShowTextAtPoint错误显示文本

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; }

我在iOS应用程序中使用CGContextRef创建PDF,以及一些我创建的用于绘制项目(如线条、文本、图像等)的实用方法

我使用以下方法将多行文本字符串绘制到CGContextRef:

- (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

我在另一篇关于反转文本绘图的堆栈溢出文章中发现了该代码。我不确定它究竟是如何工作的,为什么工作的,但它似乎正在做它现在需要做的事情。谢谢