2012-01-15 12 views
8

Penso che mi manchi qualcosa di semplice qui. Devo creare un UIImageView semitrasparente che copra l'intero schermo compresa la barra degli strumenti di navigazione. Come faccio a fare questo?aggiungi UIImageView che copre la barra di navigazione

Questo è quello che sto cercando di fare ...

enter image description here

risposta

17

Questa è una possibile soluzione:

UIImage *image=[UIImage imageNamed:@"whatever.png"]; 
UIImageView *overlay=[[UIImageView alloc] initWithImage:image]; 
overlay.alpha=0.5; 
[[[[UIApplication sharedApplication] delegate] window] addSubview:overlay]; 

EDIT:

  • è probabile che non dovresti impostare il valore alfa per la sovrapposizione, ma piuttosto usare un PNG trasparente con trasparenza incorporata l Evels. Eppure, è una possibilità.
  • Quando non si utilizza ARC, è necessario [overlay release].
+1

Default.png è un file un po 'strano da scegliere per un esempio come questo .. L'ultima riga non è necessaria, addSubview pone la nuova sottoview in cima a tutte le altre subviews. –

+0

Non l'ho provato, ma suppongo che non sarò in grado di rilevare la rotazione. – Eric

+0

@Eric, questo codice non ti impedirà di rilevare la rotazione, né ti aiuterà: spetta a te rilevare l'attuale rotazione dell'interfaccia/dispositivo e selezionare e posizionare l'immagine di sovrapposizione di conseguenza. – magma

1

Per mettere a fuoco la risposta di cui sopra un po ', è sufficiente essere chiari su come le viste si agganciano a quali parti dello schermo del dispositivo sono "proprietarie".

Il punto chiave è che in una vista di navigazione, la barra di navigazione stessa non fa parte del tuo [myController view] - la vista del tuo controller di visualizzazione è tutto sotto la barra e qualsiasi cosa fai in quella vista si aggancia al rettangolo sotto quella barra.

La barra è, tuttavia, parte di [myAppDelegate window]. La finestra è essenzialmente l'intero schermo del tuo dispositivo, mentre le viste sono sotto-parti responsabili della gestione dei loro limiti specifici. Quindi chiamando [[myAppDelegate window] addSubView:] verrà visualizzato sopra la barra dove non lo sarà [[myViewController view] addSubView:].

Problemi correlati