2011-06-03 21 views
0

我正在为我的应用程序的文本添加功能。这段文字将会添加到CGContext和Quartz 2D中。变量text从UITextField的文本属性中拉出。编码和转换中的Quartz 2D Text Drawing错误?

这里是我到目前为止的代码:

CGRect textBox = CGRectMake(0, 0, 300, 200); 
UIView *textView = [[UIView alloc] initWithFrame:textBox]; 
const char *textChar = [text UTF8String]; 

NSInteger xLocation = (contentOffset.x + 100); 
CGContextSelectFont (UIGraphicsGetCurrentContext(), "Helvetica", 14.0f, kCGEncodingMacRoman); 
CGContextSetShouldSmoothFonts(UIGraphicsGetCurrentContext(), YES); 
CGContextSetCharacterSpacing (UIGraphicsGetCurrentContext(), 10); 
CGContextSetTextDrawingMode (UIGraphicsGetCurrentContext(), kCGTextFill); 
CGContextSetRGBFillColor (UIGraphicsGetCurrentContext(), 255, 255, 255, 1.0); 
CGContextShowTextAtPoint (UIGraphicsGetCurrentContext(), xLocation, 110, textChar, 9); 
[drawGallery addSubview:textView]; 

我有几个问题是:

  1. 的文本渲染翻转 - (这是很容易与变换整流,但我遵循的教程没有这个问题,所以我有点困惑LINK)。

  2. 文字呈现奇怪的字符 - 我认为这是一个编码问题,但我该如何调整呢?

  3. 该文本没有被添加到addSubview行的视图中,它只在CGContext更新时才被添加,即我也有画线功能,如果我在视图上绘制,那么文本会奇迹般地弹出向上。

  4. 该文本是可怕的锯齿状和严重呈现,有什么我可以做到这一点?我添加了一个CGContextSetShouldSmoothFonts,但它似乎没有做任何事情。

请参阅以下的例子:

strange characters

感谢所有帮助你可以给。

+0

您是否在drawRect方法中使用了与文本相关的CGContext *函数? – user478681 2011-06-03 14:35:16

回答

2

对于文本翻转,给别人解决同样的问题被张贴text inverted problem solution [Stackoverflow] - 使用:

CGContextSetTextMatrix(context, CGAffineTransformMake(1.0,0.0, 0.0, -1.0, 0.0, 0.0));     

对于编码的问题,您正在使用[text UTF8String]获取文本的CString(UTF8字符是通用多字节)但CGContextSelectFont()指定MacRoman(单字节格式)。

朱利安

0

我已经想出了这些错误的大部分。

  1. 的文本渲染翻转

  2. 的文本渲染与奇怪的字符 - 我觉得这是一个 编码的问题,而是如何调整 呢?

  3. 文本不会被添加到在addSubview线来看,它仅在CGContext上被 更新 被添加,即我有画线 功能也是一样,如果我的看法 然后画文本奇迹般地弹出。

  4. 该文本是可怕的锯齿状和严重呈现,有我可以为此做的 ?我添加了一个 CGContextSetShouldSmoothFonts,但它 似乎没有做任何事情。

  1. 使用一个基本的转换,我就能够自动翻转文本。

  2. 这里我调整了编码,所以MacRoman始终都在使用。

  3. 我不得不手动调用一个更新 - 我写了一个函数,做到这一点,并在需要它的地方调用它。

  4. 由于文本打印在循环中被捕获,似乎将文本多次打印在彼此的顶部,因此锯齿状。