2010-07-27 10 views
6

Tengo UIView en un UITabController. y hay un UITableView en él.autoresize of uiview

Al alternar en la barra de estado de la llamada, no hace nada y la vista no cambia automáticamente de tamaño.

Asume el tamaño correcto en función de si la llamada entrante UIStatusBar se alteró cuando se inicia la aplicación, pero si se activa el UIStatusBar mientras la aplicación está ejecutándose, nada cambia.

Otra vista de pestañas con un UINavigationController parece cambiar el tamaño muy bien.

Este es el código

 
if ([indexPath indexAtPosition:0] == 0 || [indexPath indexAtPosition:0] == 1) { 
     if (!airportChooser) { 
      airportChooser = [[AirportChooserController alloc] init]; 
      airportChooser.targetController = self; 
      airportChooser.view.autoresizesSubviews = YES; 
      airportChooser.view.autoresizingMask = UIViewAutoresizingFlexibleHeight; 
      [airportChooser.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth]; 
     } 
     airportChooser.target = [indexPath indexAtPosition:0]; 
     [self.parentViewController.parentViewController.view addSubview:airportChooser.view]; 
     self.parentViewController.parentViewController.view.autoresizesSubviews = YES; 
     self.parentViewController.parentViewController.view.contentMode = UIViewContentModeRedraw; 
     [self.parentViewController.parentViewController.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth]; 
     airportChooser.view.contentMode = UIViewContentModeRedraw; 
     //[airportChooser open]; 
    } 

Respuesta

13

¿Te ha establecido el cambio de tamaño de la máscara UIView correctamente? Puede configurarlo en Interface Builder en la pestaña de tamaño, son las líneas rojas las que puede hacer clic.

También puede establecer en código usando algo como:

[view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | 
          UIViewAutoresizingFlexibleHeight]; 

También asegúrese de que el supervista ha establecido autoresizesSubviews a SÍ.

Puede encontrar más información al respecto en el UIView documentation.

+1

He hecho ambas cosas pero aún no tengo suerte Ahora estoy agregando la vista a la ventana (solucioné el ejemplo anterior usando el controlador push view) y tiene el mismo efecto que el descrito anteriormente Agrega la vista en el lugar correcto dependiendo de la posición en la barra de estado, pero no se ajustará una vez que esté abierto si agregué la sub vista en la aplicación si terminé de ejecutar funciona bien pero si lo agrego más tarde como resultado de la entrada del usuario no lo hace – msaspence

+0

¡Jefe! ¡Me salvaste la vida haciéndome conocer una propiedad "autoresizesSubviews"! Estaba enfrentando un problema que estaba ocurriendo mientras creaba subvistas programáticamente pero la supervista estaba en el guión gráfico. "La cuestión fue que las subvistas están pidiendo que se configure el autoajuste, lo que me estaba matando también, después de haberlo configurado correctamente". +1 pulgares arriba! – Prasanna

0

Mientras que la respuesta de klaaspeiter tiene sentido y en algunos casos puede ser la respuesta correcta en mi caso concreto que era porque yo estaba añadiendo una vista sub a la vista de un UINavigationController con addSubview en lugar de pushViewController: Vista animado: no;

+0

, aunque esto es una forma de solucionar el problema, no es una solución para cuando quiera usar addSubview como lo hago ahora :( – msaspence