2012-04-14 38 views
16

Así que cuando un usuario hace clic en un botón en mi aplicación, me gustaría crear una nueva vista con un indicador de actividad y cubrir toda la pantalla con ella hasta que la acción del botón finalice.¿Cómo hacer que mi vista del indicador de actividad cubra toda la pantalla?

Sin embargo, mi opinión indicador de actividad está cubriendo sólo en el interior de una vista de tabla, que se ve así:

enter image description here

cómo hacer que cubre toda la pantalla? Incluyendo el controlador de navegación y la barra de herramientas de vista de tabla.

Aquí está mi código que utilizo para crear la vista:

self.overlayView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds]; 
self.overlayView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]; 
self.activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
self.activityIndicator.center = self.overlayView.center; 
[self.overlayView addSubview:self.activityIndicator]; 
[self.activityIndicator startAnimating]; 
[self.tableView addSubview:self.overlayView]; 

Respuesta

21

Cambio

[self.tableView addSubview:self.overlayView]; 

Para

[self.navigationController.view addSubview:self.overlayView]; 

Establecer rect de la superposición en consecuencia.

+2

+1 ya que esto también girará adecuadamente (solución de shabzco no lo hará). – Till

+0

@CodaFi Gracias, funcionó. Pero, ¿cómo puedo eliminar la vista? Ahora cuando lo hago [self.activityIndicator removeFromSuperview]; [self.overlayView removeFromSuperview]; no funciona –

+1

Agregué mi vista de superposición con una etiqueta: overlayView.tag = 1; y luego usé la etiqueta para identificar la superposición para eliminarla: [[self.navigationController.view viewWithTag: 1] removeFromSuperview]; – JanB

5

hacer esto:

[[UIApplication sharedApplication].keyWindow addSubview:self.overlayView]; 
Cuestiones relacionadas