2012-02-24 14 views
0

これはどのように動作するのか分かりません。 UIViewオブジェクトをUIViewController .xibファイルに描画すると、UIView自体が再描画されます。私はのUIViewControllerののviewDidLoadUIViewサブクラスをプログラムで追加すると描画されない

CustomView *v = [[CustomView alloc] initWithFrame:self.view.frame]; 
[self.view addSubview:v]; 

CustomView : UIView

ようサブビューに追加した場合のCustomViewは、自分自身を描画しません。私はそれからやりました。

[self.view setNeedsDisplay]; 

まだ何も得られません。ただの白い背景(私が前に得ていた黒い背景とは違う)が、私の描いたものはありません。プログラムでUIViewを追加すると、どのように動作しますか?ありがとう。

+1

あなたはinitWithCoder 'のいずれかの初期化ロジックを持っていますか:'?この初期化子は、ビューがnibファイルからロードされるときに 'initWithFrame:'の代わりに呼び出されます。 – titaniumdecoy

+0

@titaniumdecoyいいえ、初期化はありません。私はそれについて何かを読んで覚えて、それに関するいくつかの記事を見た。私はinitWithCoderを呼び出しますか?それとも、私はまだinitWithFrameを呼び出しますか?また、私はinitWithCoderで何を初期化するのですか?私のdrawRectですべてが完了しているからです。 –

+0

おそらく、CustomViewまたは少なくとも関連する部分を共有する必要があります。 – dbrajkovic

答えて

0

CustomViewのフレームを間違って設定していることがあります。

各ビューには、左上隅に(0、0)という独自の座標空間があります。ビューのframeは、親の座標空間にあります。これは、ビューのframeをスーパービューのframeと同じにすることがよく間違っていることを意味します。

ビューのboundsは、ビュー自身の座標空間にあります。したがって、CustomViewのスーパービューを正確にカバーしたい場合は、CustomViewframeをスーパービューのboundsに設定する必要があります。

これを試してみてください:

CustomView *v = [[CustomView alloc] initWithFrame:self.view.bounds]; 
関連する問題