web-dev-qa-db-ja.com

サブビューの上にdrawRect

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

問題は、drawRectがサブビューの下に何かを描画しているように見えることです(したがって表示されません)。

drawRectが描画するものをカスタムUIViewのサブビューの上に表示したい。

これは可能ですか?

38
RawMean

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

特定の要件によっては、既存のサブビューを含むプレーンなUIViewを背景/コンテナビューとして使用し、次に別のサブビューとしてカスタムビューを最上部に追加して、Zオーダーが最も高くなるようにする必要がある場合があります。 。

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

28
jrturton

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

上に描画する場合は、別の透明なサブビューを一番上のサブビューとしてコンテナに配置し、そのサブビューに描画します。その上でユーザーインタラクションを無効にしても、タッチ処理に干渉することはありません。

10
Ole Begemann