2012-02-29 4 views
1

私は今、奇妙な問題を抱えています。私は、drawRect:を呼び出すUIViewController UIViewで図面を生成していますが、コード処理全体がクラッシュすることなく実行されますが、何も生成されません。 UIView内のUIオブジェクトをクリックすると、drawRectが読み込まれ、イメージが表示されます。drawRectの描画は常に呼び出されますが、常に何かが生成されるわけではありません。

これは唯一の良いことは、最初のロード時に毎回発生することですが、後で何度か起こることもあります。

これは通常動作するので、私はリロード/セット機能のようなものを見逃していますか?

CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextClearRect(context, rect); 
CGContextSetRGBFillColor(context, 1, 1, 1, 1.0f); 
CGContextFillRect(context, rect); 

CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 
CGContextSetLineWidth(context, 5.0); 

CGContextMoveToPoint(context, 20, 20); 
CGContextAddLineToPoint(context, 40, 40); 
CGContextStrokePath(context); 
+2

なぜあなたは 'UIGraphicsEndImageContext()'を呼び出していますか? –

+0

良い点は、古いコードの一部だったが、まだ問題が残っている –

答えて

-1

あなたはそれがあることを期待するとき、あなたのdrawRect:コードが呼び出さ取得されていないように聞こえます。必要に応じてUIViewにsetNeedsDisplayを呼び出すようにしてください。

+0

それは 'setNeedsDisplayInRect'によって呼び出されていますが、まだ何もありません。 –

1

コードは-drawRect:と直接電話していますか?その場合、は、を停止します。 -drawRect:を呼び出す前に、UIViewは描画コンテキストを設定して、-drawRect:のオーバーライドを描画する必要があります。そのメソッドを直接呼び出そうとすると、描画コンテキストが正しく設定されず、図面が間違った場所に置かれたり、どこにも表示されなくなります。図面が正しく管理されている場合は、-drawRect:が呼び出される前にコンテキストが正しく設定されます。

+0

Yeh私は現在' setNeedsDisplayInRect'で呼び出す前に 'setNeedsDisplay' –

関連する問題