CGContextShowTextAtPoint

CGContextShowTextAtPoint

我正在使用以下代码在自定义视图中绘制一些文本:

- (void)drawProgramDescription:(CGContextRef) context {
    UIGraphicsPushContext(context);
    // get string from dataSource
    NSString *programDescription = [self.dataSource giveDescriptionOfProgram:self];
    // convert string to a C string
    const char *programDescriptionCString = [programDescription
                                             cStringUsingEncoding:kCGEncodingMacRoman];
    CGContextSelectFont(context, "Helvetica", 1, kCGEncodingMacRoman);
    // draw it
    CGContextShowTextAtPoint(context, 20, 20, programDescriptionCString,
                                              sizeof(programDescriptionCString) + 1);
    UIGraphicsPopContext();
}


在我的drawRect方法中调用此方法,以便在我的自定义视图上显示文本。

但是,问题在于,即使我的CGContextShowTextAtPoint已经在另一个迭代中,放入drawRect的字符串的大小似乎也是固定的。

因此,例如,如果第一次显示的文本是:

X*X


在第二次调用drawRect时,它应该绘制文本

sin(X)


它不会完全显示文本,而是将文本剪切在

sin(


它仍然具有drawRect的第一次迭代的原始大小。

这是CGContextShowTextAtPoint的功能吗?还是我错过了什么?

谢谢!

最佳答案

您可能更高兴地逃离CGContextShowTextAtPoint。它太受限制了。而是使用NSString UIKit Additions中记录的方法。

他们绘制真正的NSStrings。他们借鉴了当前的情况。他们对字符串,编码,字体,边界矩形等了解更多。

在iOS 6中,甚至还有并行的NSAttributedString方法。

关于ios - CGContextShowTextAtPoint即使在不同的迭代期间也具有固定的大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16594225/

10-12 14:36