我正在为我的应用程序开发文本添加功能。这篇文章将与CGContext和Quartz 2D一起添加。变量text
是从UITextField的文本属性中提取的。
这是我到目前为止的代码:
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];
我有一些问题:
正在渲染文本 - (这可以通过转换轻松解决,但我遵循的教程没有这个问题所以我很困惑一点LINK)。
文字正在呈现奇怪的字符 - 我认为这是一个编码问题,但我该如何调整呢?
文本没有添加到addSubview
行的视图中,只有在更新CGContext时才添加,即我也有绘制线功能,如果我在视图上绘制然后文本神奇地弹出。
文字非常粗糙,渲染严重,我能为此做点什么吗?我添加了CGContextSetShouldSmoothFonts
,但它似乎没有做任何事情。
见下面的例子:
感谢您提供任何帮助。
答案 0 :(得分: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(单字节格式)。
儒略
答案 1 :(得分:0)
我已经找出了大部分错误。
文字正在翻转
文字是用奇怪的字符渲染的 - 我认为这是一个 编码问题,但我如何调整 此
该文本不会添加到addSubview行的视图中,仅适用于该视图 在CGContext中添加 更新,即我有画线 功能也是如果我画在视图上 然后文本神奇地弹出。
- 醇>
文字很可怕,呈现的很糟糕,有什么我的 可以做到这一点?我添加了一个 CGContextSetShouldSmoothFonts但它 似乎没有做任何事情。
使用基本转换,我能够自动翻转文本。
我在这里调整了编码,因此整个过程都使用了MacRoman。
我不得不手动调用更新 - 我编写了一个功能,并在需要的地方调用它。
由于文本打印被一个循环捕获,它似乎在对方之上多次打印文本,因此是锯齿状。