iphone - premium - Controlador de navegación Estilo de barra transparente no funciona
navigation gestures (12)
Creo que el UINavigationController supone que sus marcos de vista del controlador no incluyen el área debajo de la barra de navegación.
UIBarStyleBlackTranslucent se utiliza con mayor frecuencia para UIToolbar, por lo que Apple probablemente no facilitó su uso con UINavigationBar. Es probable que deba abandonar el UINavigationController o comenzar a piratear los marcos (teniendo cuidado con las rotaciones), si quiere renderizar de manera confiable en el área de la barra.
Además, si su intención es ocultar la barra de navegación después de unos segundos, tendrá un tiempo mucho más fácil si lo desvanece (como la aplicación Fotos) en lugar de intentar deslizarlo hacia arriba (como Mobile Safari). Créeme en eso ... eso me tomó mucho tiempo para aprender de la manera difícil.
Estoy usando un controlador de navegación, y tengo el estilo configurado para:
navController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
Pero cuando ejecuto mi programa, el controlador de navegación parece estar sobre un fondo blanco, no sobre mi fondo. Cuando presiono un controlador, hacia la izquierda o hacia la derecha, toda mi vista, la actual, cambia a la parte superior exactamente del tamaño de la barra de navegación. Y es allí donde puedo ver mi fondo a través de la barra del controlador de navegación. ¿Algunas ideas? Cuando mi barStyle está configurado como opaco, todo se ve bien. Estaba pensando en configurar mi marco de visión con un valor "y" negativo, pero creo que debería haber una manera más elegante.
El controlador de navegación compensa el sistema de coordenadas de todas sus subvistas para que dibujen debajo de la barra de navegación.
Extienda el marco de su vista en el dominio y negativo para que se dibuje debajo de la barra de navegación.
Si configura la barra de navegación del controlador de navegación en transparente en su delegado de la aplicación lo suficientemente temprano (funcionó para mí antes de agregar el controlador de navegación a la ventana), automáticamente cambiará su vista debajo de la barra de navegación.
Lamentablemente, tampoco cambia su vista debajo de la barra de estado. Triste, parece que necesitas implementar tu propia versión de UINavigationController. Afortunadamente, no es tan malo como UINavigationBar es bastante reutilizable.
Tuve el mismo problema, y lo resolví haciendo que el fondo de la vista raíz fuera el mismo que mi vista. El área blanca detrás de la barra de navegación resultó ser la vista raíz.
Debe establecer el estilo de barra en su archivo info.plist para que lo desplace todo correctamente.
Sin embargo, no lo he probado desde que se lanzó el 2.1 f / w, pero cuando probé esto en 2.0 descubrí que la configuración se perdió después de una rotación de vertical a horizontal.
Me encontré con este mismo problema (en 3.1.3) y aunque no puede establecer el estilo de barra después de que la barra de navegación ya se haya configurado, PUEDE establecer los valores tintColor y translúcido siempre que lo desee:
self.navigationController.navigationBar.tintColor = [UIColor blackColor];
self.navigationController.navigationBar.translucent = YES;
Creará la barra ''blackTranslucent'', cambio la apariencia de la barra de navegación cuando presiono ciertos controladores de vista en la pila.
intente usar esto, puede ser útil.
_topToolBar.barStyle = UIBarStyleBlackTranslucent;
_topToolBar.alpha = 0.3;
Tuve el mismo problema. ¡Lo resolví!
ImageViewExtendController *detailImageController = [[ImageViewExtendController alloc] init];
[detailImageController loadImage:url];
[self.navigationController pushViewController:detailImageController animated:YES];
self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.169 green:0.373 blue:0.192 alpha:0.9];
self.navigationController.navigationBar.translucent = YES;
Nota:
- No use
self.navigationBarStyle
yself.navigationBarTintColor
para cambiar. - Agregue las dos últimas declaraciones a su
viewDidLoad
.
Prueba esto:
self.tabBarController.tabBar.superview.backgroundColor = [UIColor blackColor];
Simplemente use una imagen de fondo transparente, y translúcida = SÍ para permitir que el contenido fluya por debajo de la barra. Funciona en iOS 5 / 6. Agregue en viewDidLoad.
self.navigationController.navigationBar.translucent = YES;
UIImage * backgroundImage = [UIImage imageNamed:@"spacer.gif"];
[self.navigationController.navigationBar setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:UIBarMetricsDefault];
Adjunté aquí la imagen de spacer.gif, una imagen transparente de 1px x 1px.
Cambiar las opciones Extender bordes en vista de niñoControladores
Como por ejemplo, en el editor xcode, vaya a su primer hijo de viewcontroller y desactive las opciones:
Extend Edges;
Under Top Bars;
Under Bottom Bars;
Under Opaque Bars;
De esta forma, su hijo ViewController no se distribuirá comenzando debajo de la barra de estado del controlador de navegación, ni la barra de pestañas ni las barras de herramientas
Espero que pueda ayudar a cualquiera