2011-10-08 16 views
36

Ho sottoclasse UIView e ho aggiunto un metodo drawRect. Quindi definisco una vista utilizzando questa classe personalizzata e aggiungo le visualizzazioni secondarie ad essa.drawRect sopra le sottoview

Il problema è che drawRect sembra disegnare materiale sotto le immagini secondarie (quindi non visibile).

Desidero materiale che disegni drawRect vengano visualizzati sopra le sottoview della mia personalizzata UIView.

È possibile?

+0

Si prega di fornire un esempio (possibilmente immagini?) Di ciò che si sta cercando di ottenere. Sembra che tu voglia prima disegnare il contenuto delle subview e lo "sfondo" in cima a quello, ma non posso esserne sicuro. – jrturton

+0

Grande domanda, grazie per averlo mantenuto conciso. –

risposta

28

Una sottoview verrà sempre disegnata su "top" della sua superview.

A seconda dei requisiti specifici, potrebbe essere necessario disporre di un UIView semplice come visualizzazione di sfondo/contenitore, con le proprie sottoview esistenti in tale posizione, e quindi la visualizzazione personalizzata come un'altra sottoview aggiunta in alto, quindi ha il ordine Z più alto.

Ciò funzionerebbe, ad esempio, se la visualizzazione personalizzata fosse una griglia sovrapposta che dovrebbe essere al di sopra di tutto il resto. La visualizzazione personalizzata dovrebbe essere non opaca con un colore di sfondo chiaro.

9

No, le sottoview compaiono sempre sopra il loro contenitore. Niente ti impedisce di rendere le visualizzazioni secondarie (parzialmente) trasparenti, ovviamente.

Se si desidera disegnare sopra, posizionare un'altra sottoview trasparente come subview più in alto nel contenitore e disegnare in quella. Se disabiliti l'interazione dell'utente, non interferirà con la tua gestione del tocco.

+0

Vale anche la pena notare che questo refactoring forzato (a un nuovo UIView o viste) aiuterà la leggibilità, nella maggior parte dei casi. +1 –

Problemi correlati