6

Estoy creando un UIView programáticamente en loadView. La aplicación tiene un UITabBarController y UINavigationController.Cuadro de UIView cuando existe la barra de navegación y el controlador de barra de pestañas

¿Cómo creo una vista que cambia automáticamente el tamaño de cuando existen tanto una barra de pestañas como una de navegación?

Mi enfoque actual de este problema es el cálculo de las alturas de los controladores barra de navegación y de tabulación y restarlos de la altura de la mainScreen:

float navObjectsHeight = self.tabBarController.tabBar.frame.size.height 
    + self.navigationController.navigationBar.frame.size.height; 

CGRect mainFrame = CGRectMake(0, 0, screenFrame.size.width, 
    screenFrame.size.height - navObjectsHeight); 

UIView *contentWrapper = [[UIView alloc] initWithFrame:mainFrame]; 

Respuesta

5

El UIView tiene una propiedad para manejar esa situación. Como se va a crear mediante programación el código a utilizar es:

UIView *aView = [[UIView alloc] init]; 
aView.autoresizingMask = UIViewAutoresizingFlexibleHeight; 
+0

he tenido éxito con el autoresizingMask al crear vistas de tabla mediante programación, pero no cuando se crea UIViews en loadView. – dianovich

+0

asegúrese de que el marco de la vista que lo contiene tenga los valores adecuados. Si eso no funciona, entonces creo que podrías proporcionar más detalles. –

+0

Creo que los problemas que tenía tenían que ver con la forma en que estaba iniciando las vistas en loadView. A menudo, es mejor invocar [super loadView] y luego instanciar una vista de contenedor con frame self.view.bounds. Luego, la máscara de aumento de tamaño cambiará de tamaño para dar cuenta del controlador de la barra de pestañas. – dianovich

Cuestiones relacionadas