0

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: 無効なコンテキスト

もう一つは、細いフォントを表示する方法ですか?

4

2 に答える 2

0

描画する前にコンテキストが必要です。描画コードを の中にdrawRect入れると、これが自動的に行われます ( drawRectUIView をサブクラス化すると得られます)。

を使用して独自のコンテキストを作成UIGraphicsBeginImageContext(CGSize size)できますが、コンテキストが有効なままであることを確認するのに問題が生じる可能性があります。

とにかく、現時点では確かに問題があります。これについて詳しく知っている人は、参加したいですか?

于 2011-01-17T13:40:54.803 に答える
0

私が理解しているように、描画する前にグラフィックスコンテキストをクリアすることは常に良い考えです。

 CGContextRef context = UIGraphicsGetCurrentContext();
 CGContextClearRect(context, theRectInWhichYouWillBeDrawing);
于 2010-08-09T11:44:20.157 に答える