Pregunta

Cuando utiliza un UITabBarController, ¿cómo obtiene el tamaño de la barra de pestañas en la parte inferior? De manera similar, ¿cómo sabe cuánto espacio tiene dentro de la vista con pestañas para su contenido? Veo muchos ejemplos de personas que ajustan el tamaño de las vistas de sus pestañas a [[UIScreen mainScreen] applicationFrame], que no puede ser correcta porque la barra de pestañas ocupa algo de espacio en la parte inferior de la pantalla.

Además, ¿es posible modificar el tamaño de la barra de pestañas?

Gracias Ryan

¿Fue útil?

Solución

La razón por la que puede usar applicationFrame es que UITabBarController cambia el tamaño de las vistas de sus subcontroladores, por lo que siempre que su vista admita el cambio de tamaño correctamente, todo funcionará.

Puede obtener el tamaño de la barra de pestañas accediendo a la propiedad de la barra de pestañas del controlador de la barra de pestañas y mirando su marco. El tamaño total de la barra de pestañas más el área de la vista se puede encontrar mirando el marco de la propiedad de vista del controlador de la barra de pestañas, por lo que una pequeña resta le dará el número que está buscando:

CGFloat myViewHeight = tabBarController.view  .size.height
                     - tabBarController.tabBar.size.height;

Otros consejos

Antigua pregunta, pero de todos modos:

Si no carga su vista desde una NIB, configure los indicadores de cambio de tamaño automático en su función loadView; algo como esto:

self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight |
                             UIViewAutoresizingFlexibleWidth;

Si lo hace, puede usar [[UIScreen mainScreen] applicationFrame] para especificar el marco de su vista; se redimensionará automáticamente si hay una barra de pestañas.

Si tiene una NIB para su vista, Interface Builder configura automáticamente la máscara de tamaño automático.

Markus

Si puede averiguar cómo cambiar el tamaño de una UITabBar, puede cambiar el tamaño de una UITabBarController's UITabBar. Puede acceder al objeto tomando

[[UITabBarController subviews] objectAtIndex:0]

Pero en la documentación se recomienda que no acceda directamente al objeto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top