2012-01-15 14 views

Respuesta

17

Ésta es una solución posible:

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

EDIT:

  • es probable que no estaría configurando el valor alfa de la superposición, sino más bien usar un PNG transparente con transparencia integrada l evels. Aún así, es una posibilidad.
  • Cuando no utilice ARC, debe [overlay release].
+1

Default.png es un archivo un poco raro para elegir en un ejemplo como este .. La última línea no es necesaria, addSubview pone la nueva subvista en la parte superior de todas las otras subvistas. –

+0

No lo he intentado, pero supongo que no podré detectar la rotación. – Eric

+0

@Eric, este código no le impedirá detectar la rotación, ni le ayudará a usted: depende de usted detectar la rotación actual de la interfaz/dispositivo y seleccionar y colocar su imagen de superposición en consecuencia. – magma

1

Para enfocar lo anterior, responda un poco, solo necesita tener claro cómo las imágenes se recortan a qué partes de la pantalla del dispositivo son "propias". El punto clave es que en una vista de navegación, la barra de navegación no es parte de su [myController view] - la vista de su controlador de vista está debajo de la barra y cualquier cosa que haga en esa vista se acorta al rectángulo debajo de esa barra.

La barra es, sin embargo, parte de su [myAppDelegate window]. La ventana es esencialmente la pantalla completa de su dispositivo, mientras que las vistas son sub partes responsables de gestionar sus límites específicos. Por lo tanto, llamar al [[myAppDelegate window] addSubView:] se mostrará arriba de la barra donde [[myViewController view] addSubView:] no lo hará.

Cuestiones relacionadas