2011-06-22 4 views
0

私は現在initWithFrameで初期化されたUIImageオブジェクトを持っています。そして、CGContextで-(void)drawRect:(CGRect)rect{}の2D図面を持っています。非常に基本的。私が知りたいのは、どうすれば私がどのようにプッシュすることができるかということです。ボタンまたは任意のイベント(初期化時だけでなく)?私は新しい方法にdrawRect内のコードをコピーしようとしたinitWithFrameなしでCGContextに画像を描画

redrawと呼ばれるが、これは明らかにエラーが発生:

CGContextMoveToPoint: invalid context 0x0

は私だけのUIViewをしてきたがCGContextて描くことができるようにする方法を知りたいです作成した。 UIButtonイベントのリスニング方法

ありがとう。

答えて

2

UIViewのdrawRect:メソッド内に描画するか、独自のイメージコンテキストを作成することによってのみ描画できます。 drawRect:以外の方法で画面に描画したり、CALayerの描画を実装したりすることはできません。それに応じてビューに変数を設定し、次にsetNeedsDisplayを呼び出して再描画させる必要があります。たとえば、ビューにプロパティ@property(retain) UIImage *image;を追加し、その上に新しいイメージを設定してsetNeedsDisplay(またはそれ以上の場合は、setImage:メソッドを実装してここに[self setNeedsDisplay];を呼び出します)を呼び出します。

+0

私は頻繁に(100hz)新しい矩形を描画する必要がある場合(単一の色付きの矩形のみ)、これはまだ選択肢ですか、代わりに使用する必要がありますか? (CGContextは私が必要とするものを行います - 再描画を除く) – LouwHopley

+0

AFAIK iPhoneの画面は60Hzのリフレッシュレートしかありません。とにかく、これを頻繁に描画する必要がある場合は、CoreAnimationに精通し、[CADisplayLink](https://developer.apple.com/library/ios/#documentation/QuartzCore/Reference/CADisplayLink_ClassRef/Reference/Reference)を使用する必要があります。 html%23 // apple_ref/doc/uid/TP40009031)。 – DarkDust