2011-07-05 10 views
2

drawrectメソッドを使用せずに自分のuiviewを描画する必要がありますが、どの時点でどのようにグラフィックスコンテキストを動的に取得するのか分かりませんか?drawrectメソッドを使用せずにUIViewのコンテキストを取得

たとえば、ユーザーがツールバーのポップアップから追加行を選択したときに行を追加する必要があります。

答えて

5

これはできません。新しい行を示すために何らかの種類のマーカーを持っていなければならず、次にsetNeedsDisplayメソッドを呼び出すと、drawRect:メソッドが呼び出されます。 drawRect:メソッドでマーカーを確認し、それに応じて線を描画することができます。

状態を保存する必要があります。おそらくdrawRect:メソッドが呼び出されたときにビューを描画するために使用できるように、行の配列が追加されています。

あなたは、この目的のために画像ビューを使用することができます

代替。これを行うことができます。

UIGraphicsBeginImageContext(imageView.frame.size); 
[imageView.image drawInRect:CGRectMake(0, 0, imageView.frame.size.width, imageView.frame.size.height)]; 
/* Draw line here */ 
imageView.image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

このようにして状態はなくなりますが、画像にその行を追加するだけです。

+0

本当にありがとうございました:)それは私の多くの助け:) –

2

にはがあり、drawRect:以外のグラフィックスコンテキストはありません。 drawRect:の外で任意の描画呼び出しを行い、それらを保持させることはできません。

ビューに線などを動的に追加する必要がある場合は、最初に配列やその他の構造体に線を格納してから、その構造体をdrawRect:内に反復して各項目を描画する必要があります。

また、各行にカスタムビュー(またはレイヤー)を作成し、サブビューとして追加することもできます。

関連する問題