我想在每5秒后调用一个负责在屏幕上绘制文本的方法。这是我的代码
-(void) handleTimer: (NSTimer *)timer
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, currentColor.CGColor);
CGContextTranslateCTM(context, 145.0, 240.0);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextSelectFont(context, "Arial", 18, kCGEncodingMacRoman);
CGContextSetCharacterSpacing(context, 1);
CGContextSetTextDrawingMode(context, kCGTextFillStroke);
CGContextSetRGBStrokeColor(context, 0.5,0.5,1,1);
CGContextShowTextAtPoint(context, 100, 100, "01", 2);
}
但是在调用此方法5秒后我收到此错误 CGContextShowTextAtPoint:无效的上下文
另一件事是如何显示更薄的字体?
答案 0 :(得分:0)
据我了解,在绘制之前清除图形上下文总是一个好主意。
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, theRectInWhichYouWillBeDrawing);
答案 1 :(得分:0)
在绘制之前,您必须拥有上下文。将绘图代码放在drawRect
中会自动为您执行此操作(当您继承UIView时,您会获得drawRect
。)
您可以使用UIGraphicsBeginImageContext(CGSize size)
创建自己的上下文,但可能会出现问题,确保您的上下文保持有效。
无论如何,我现在肯定有问题。知道更多这方面的人想要权衡一下吗?