我正在使用以下代码在自定义视图中绘制一些文本:
- (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/