He estado tratando de eliminar el borde de NavigationBars sin suerte. He investigado y la gente parece decirle que establezca shadowImage y BackgroundImage en nulo, pero esto no funciona en mi caso.
Mi código
self.navigationController?.navigationBar.barTintColor = UIColor(rgba: "#4a5866")
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: ""), forBarMetrics: UIBarMetrics.Default)
self.navigationController?.navigationBar.shadowImage = UIImage(named: "")
ilustración:
fuente
Swift 4 y Swift 5
Eliminar borde:
Restaurando borde:
fuente
esto eliminará la imagen de la sombra por completo
fuente
Con Swift 2 puedes hacerlo de esta manera:
Archivo AppDelegate
Aplicación de funciones internas (..., didFinishLaunchingWithOptions launchOptions: ...)
para Swift 3:
fuente
Simplemente escriba esto en la extensión de UINavigationBar
Y en tu opinión, Controlador ...
Y para deshacer esto para cualquier viewController, simplemente pase falso.
fuente
Establecer
barStyle
a.Black
antes de ajustar el tinte:fuente
Swift 5
Cuando se usa setBackgroundImage / shadowImage para ocultar la rayita, hay un ligero retraso. Este método elimina el retraso. Crédito a Chameleon Framework . Este es el método que usan (en ObjC)
fuente
La respuesta de Luca Davanzo es excelente, pero no funciona en iOS 10. Lo modifiqué para que funcione en iOS 10 y versiones posteriores.
También puede extender UINavigationController y cancelar esto.
removeFromSuperview()
en la línea no funcionará en iOS 10, así que configuré el alfa en 0 para que esta llamada sea compatible en todas partes.fuente
height >= 1.0
. En los modelos de iPhone que tienen una pantalla de retina 3x (por ejemplo, 8 Plus, XR ...) la línea del cabello tiene una altura de 0,33.Para eliminar el borde de UINavigationBar en Swift 3+, use:
fuente
para swift 3
en
viewDidLoad
métodofuente
Solo esto funcionó para mí
Árbitro
fuente
Actualizado para Swift 4 en caso de que alguien se pregunte
Es aún menos detallado ahora.
fuente
Este es el camino si desea hacerlo sin cambiar el color de fondo:
NOTA: Esto podría bloquearse en una aplicación de producción. Aparentemente, a NavigationBar no le gusta que su vista desaparezca
fuente
La respuesta aceptada funcionó para mí, pero me di cuenta de cuándo quería que reapareciera la imagen de la sombra al aparecer hacia atrás o avanzar hacia otra vc. Hubo un parpadeo notable en la barra de navegación.
Al usar este método
navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
en viewWillAppear, la barra de sombra está oculta en el controlador de vista visible actual.Usando estos 2 métodos
en viewWillDisappear el parpadeo todavía ocurre pero solo cuando reaparece la imagen de sombra y no la barra de navegación en sí.
fuente
para el swift3 deberías escribir de forma ligeramente diferente:
fuente
Esta es una versión simplificada de la respuesta de Gaurav Chandarana .
fuente
Delegado de aplicaciones
fuente
Si desea eliminar solo la línea inferior y mantener el color sólido de la barra de navegación, agregue estas líneas de código en viewDidLoad: Swift 3, 4:
¡Paz!
fuente
La línea de borde es un UIImageView y al eliminar una subvista que es un imageView se eliminarán barButtonItems con UIImageView. El siguiente código lo ayudará a eliminarlo. Espero que esto ayude a alguien que se enfrentó a un problema como yo.
El borde UIImageView tiene solo 0.5 de altura, por lo que este código solo elimina eso.
fuente
Dentro de AppDelegate , esto ha cambiado globalmente el formato de la barra de navegación y elimina la línea inferior / borde:
No he logrado implementar nada diferente en un VC específico, pero esto ayudará al 90% de las personas
fuente
esta es la respuesta en la base 3 rápida de la respuesta de Nate Cook
fuente
iOS 11 y Swift 4 Debe intentar seguir si desea eliminar el borde pero no hacer que la barra de navegación sea translúcida
self.navigationBar.shadowImage = UIImage()
fuente
en su NavigationController personalizado agregue estas líneas:
Nota IMPORTANTE
la última línea es importante si usa el método viewDidLoad () de la primera línea porque navigationController debería volver a dibujar la barra de navegación, pero puede usarlo fácilmente sin layoutIfNeeded () en el método viewWillAppear () antes de dibujar la barra de navegación
fuente
Método más rápido de Jack Chen:
Utilizando:
fuente
fuente