ios - apple - Diseño automático y "Ocultar barra inferior cuando se presiona"
storyboard apple (10)
El problema es con esta restricción específica que se encuentra entre la vista y la parte superior de la guía de diseño inferior.
Seleccione la restricción y edite su propiedad "Segundo elemento"
Aquí debes elegir fondo
Una vez que tenga eso, la vista rosa ya no estará influenciada por la guía de diseño. La guía de diseño parece reconocer que la barra de pestañas está oculta solo después de que la vista de la raíz del controlador de vista empujada se encuentre dentro de los límites de la pantalla principal y esto solo ocurre cuando finaliza la animación.
Y esa es la razón por la cual la jerarquía de vistas necesita distribuirse de nuevo, lo que causa la animación no deseada.
La estructura (simplificada) de mi aplicación es esta:
UITabBarController
con un UINavigationController
contiene un UITableViewController
como controlador de vista raíz.
al tocar una de las celdas del controlador de vista de tabla, UIViewController
un UIViewController
regular (vamos a llamarlo VC) para ocultar la barra de pestañas inferior. (usando la bandera "Ocultar barra inferior cuando se empuja")
En el guión gráfico, agregué una subclase UIView
regular a VC que se parece a una barra inferior, y utilizo el diseño automático para fijarla en la parte inferior de la vista de VC.
El problema
cuando presiono VC, demora un segundo para que esta vista quede fija en la parte inferior, parece que el diseño automático lo fija al fondo como si la barra de pestañas no estuviera oculta y luego de un segundo reconoce que la barra de pestañas está oculta y la mueve al fondo real de la vista.
Sé que no es la mejor explicación, así que agregué un proyecto muy simple para demostrar el problema.
Hola En el guión gráfico, seleccione la barra de pestañas (¿Es Tab Bar Controller Scene?> Tab Bar Controller> Tab Bar), en el inspector de atributos, desmarque Translucent box. Esta acción soluciona tu problema. (Pero hay muchas cosas, "Ocultar barra inferior cuando se presiona" es a la barra de herramientas).
Intenta fijar la parte inferior de la vista en la parte inferior de la supervista y no en la parte inferior del diseño
La respuesta aceptada no funcionó para mí (la opción no estaba disponible). Sin embargo, he encontrado otra solución. (basado en Ocultar barra inferior cuando se presiona durante el diseño automático )
Seleccione stand la vista y el objeto para alinear (en mi caso btnShare) y agregue una nueva restricción de alineación (bordes inferiores).
Seleccione su "Controlador de navegación" y en "Inspector de atributos" elimine la marca de "Debajo de las barras inferiores".
Si desea ocultar la barra de pestañas, puede agregar este código a su controlador,
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.tabBarController.tabBar.hidden = YES;
}
También tendrá que poner ese código (pero pasando NO) en el controlador donde desea que la barra de pestañas sea visible. También debe anular la selección de la casilla "Ocultar barra inferior cuando se presiona" en IB.
Después de Editar:
Obtendrá una mejor animación si, en el primer controlador, anima el valor alfa de la barra de pestañas no ocultas de 0 a 1 en un corto período de tiempo. Esto se ve bien si regresas con el botón Atrás. Si quiere usar el deslizamiento hacia atrás, debería hacer algo más complicado que involucre el interactivoPopGestureRecognizer.
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.tabBarController.tabBar.hidden = NO;
self.tabBarController.tabBar.alpha = 0.0;
[UIView animateWithDuration:.4 animations:^{
self.tabBarController.tabBar.alpha = 1.0;
}];
}
establece UINavigationBar Translucent con NO.
como este: self.navigationController.navigationBar.translucent = NO;
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.tabBarController.tabBar.hidden = NO;
self.tabBarController.tabBar.alpha = 0.0;
[UIView animateWithDuration:.3 animations:^{
self.tabBarController.tabBar.alpha = 5.0;
}];
}