2010-05-26 2 views
0

Я хочу вызвать метод, отвечающий за рисование текста на экране через каждые 5 секунд. Вот мой кодCGContextShowTextAtPoint: недопустимый контекст

-(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

как форматировать код, чтобы он выглядел идеально в stackoverflow? – coure2011

ответ

0

Как я понимаю, всегда полезно очистить графический контекст до его рисования.

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextClearRect(context, theRectInWhichYouWillBeDrawing); 
0

Вы должны иметь контекст перед нанесением на него. Ввод кода рисования внутри drawRect делает это автоматически для вас (вы получаете drawRect при подклассе UIView).

Вы можете создать свой собственный контекст с помощью UIGraphicsBeginImageContext(CGSize size), хотя может возникнуть проблема с тем, чтобы ваш контекст оставался действительным.

В любом случае, для меня проблематично. Кто-нибудь, кто больше знает об этом, хочет взвесить?