2009-10-17 9 views
27

E 'possibile impostare Alpha a .75 o .50 (trasparente) per la vista Genitore ma le visualizzazioni/i controlli Child sono opachi (canale Alpha 1.0 - completamente visibili).Programmazione iPhone: applicazione di Alpha to Parent ma non di Child Views

Ogni volta che si imposta l'Alpha del mio UIView principale in modo che sia trasparente, anche tutte le viste/i controlli figlio vengono visualizzati come trasparenti. C'è qualche soluzione?

risposta

28

Il genitore che funge da sfondo deve essere cambiato in un fratello prima del contenitore che avvolge i bambini. In questo modo è possibile impostare la trasparenza senza influire sull'intera gerarchia.

Questo sarebbe simile.

  • <item-container>
    • <item-background>
    • <children-container>
      • <children/>

Questa gerarchia, avrebbe lo stesso ordine di visibilità e consente di impostare l'opacità indipendentemente dal contenuto del contenitore figli.

+0

Grazie, metterà alla prova fuori. – Mustafa

+0

Ha funzionato per me :). Grazie. – Mustafa

2

Non è sicuro al 100% cosa si sta tentando di fare, ma se si desidera avere una vista contenitore con uno sfondo trasparente è possibile farlo impostando la proprietà backgroundColor su [UIColor clearColor]. In questo modo puoi vedere attraverso lo sfondo, ma tutte le sottoview rimarranno opache. Se desideri che lo sfondo sia semitrasparente, usa [Colore UIC colorWithRed: verde: blu: alfa:].

Se si desidera che l'intera vista sia semitrasparente mentre le altre viste non lo sono, è necessario renderli fratelli.

3

So che questa è una risposta tardiva e qualcosa è già stato accettato, ma ho trovato che la soluzione migliore per me non è impostare direttamente la trasparenza dello UIView, ma impostare il suo colore di sfondo su 0,0,0 , 0, rendendo il colore completamente trasparente.

+2

Giusto per essere chiari (pun completamente inteso), lo fai usando il codice seguente nella vista genitori: [myUIView setBackgroundColor: [UIColor clearColor]]; – DEzra

64

Un modo più semplice è anche possibile senza rendere i fratelli vista. Non impostare l'alfa direttamente sulla vista genitore. Utilizzare invece

[parentView setBackgroundColor:[[UIColor clearColor] colorWithAlphaComponent:0.5]]; 

Ora qualsiasi vista secondaria può avere il proprio colore e NON sarà trasparente.

In Swift, questo sarebbe

parentView.backgroundColor = UIColor.clearColor().colorWithAlphaComponent(0.7) 
+0

Ha funzionato a meraviglia; esattamente quello di cui avevo bisogno Grazie!! –