2011-10-08 14 views
36

サブクラスUIViewを追加し、drawRectメソッドを追加しました。次に、このカスタムクラスを使用してビューを定義し、サブビューを追加します。サブビューの上にdrawRect

問題は、drawRectがサブビューの下に物を描くように見えます(したがって見えません)。

drawRect私のカスタムのサブビューの上に表示されるものを欲しいUIView

これは可能ですか?

+0

達成しようとしているものの例(おそらく画像?)を教えてください。あなたはサブビューの内容を最初に描きたいと思うし、その上に「バックグラウンド」を描いているように思えますが、私は確信が持てません。 – jrturton

+0

大きな質問、簡潔にしていただきありがとうございます。 –

答えて

28

サブビューは常にそのスーパービューの「上」に描画されます。

特定の要件に応じて、バックグラウンド/コンテナビューとしてプレーンUIビューを、そこに既存のサブビューを、次にカスタムビューを別のサブビューとして追加する必要があります。最高のZオーダー。

これは、たとえば、カスタム表示が他のすべての上に表示されるグリッドオーバーレイの場合に機能します。カスタムビューは透明で背景色が不透明でなければなりません。

9

いいえ、サブビューは常にそのコンテナの上に表示されます。もちろん、(部分的に)サブビューを透明にすることを止めるものはありません。

上に描画する場合は、別の透明なサブビューを最上部のサブビューとしてコンテナに置き、そのサブビューを描画します。ユーザーインタラクションを無効にすると、タッチ操作を妨げることはありません。

+0

また、この新しいリファクタリング(新しいUIViewまたはビューへのリダイレクト)は、ほとんどの場合、読みやすさに役立ちます。 +1 –

関連する問題