¿Configurando UINavigationBar globalmente?

Estoy intentando cambiar UINavigationBar instancias de UINavigationBar globalmente con el código siguiente que está en DidFinishLaunchingWithOptions(:_) ;

 let navBarApp = UINavigationBar.appereance() navBarApp.barTintColor = UIColor.mmtRed 

pero el resultado es;

Figura 1

como se puede ver en la image, los colors son diferentes, lo que significaba ser el mismo. (El color de los botones es el que quiero que tenga mi barra de navigation.)

Cuando agrego el código de la siguiente manera:

 navBarApp.isTranslucent = false 

el resultado es;

Figura 2

Los colors son iguales en este momento, pero hay una extraña brecha entre UINavigationBar y mainView . Entonces, ¿cómo puedo solucionarlo? ¿Alguna idea?

EDITAR:

Olvidé la mención de que estoy usando una biblioteca PageMenu, ¿ tal vez esto tenga algún tipo de efecto?

Intente configurar esta propiedad automaticallyAdjustsScrollViewInsets viewDidLoad() en viewDidLoad() de viewController

 override func viewDidLoad() { automaticallyAdjustsScrollViewInsets = false } 

o mejor, asegúrese de que las inserciones de ajuste de la vista de desplazamiento no estén marcadas en todos los controlleres

introduzca la descripción de la imagen aquí

Si se establece en rootViewController, asegúrese de que esta propiedad no se sobrescriba en los controlleres secundarios

Actualización:

La solución anterior debería funcionar en la mayoría de los escenarios, o puede configurar backGroundImage en lugar de hacer que la barra sea translúcida como se indica en @WilsonXJ.

Puedes usar una extensión

 extension UIImage { static func imageWithColor(tintColor: UIColor) -> UIImage { let rect = CGRect(x: 0, y: 0, width: 1, height: 1) UIGraphicsBeginImageContextWithOptions(rect.size, false, 0) tintColor.setFill() UIRectFill(rect) let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return image } } 

Use esto como

 navBarApp.setBackgroundImage(UIImage.imageWithColor(tintColor: <Custom color>), for: .default) 

testing esto :

 let rect = CGRect(x: 0, y: 0, width: 1, height: 1) UIGraphicsBeginImageContextWithOptions(rect.size, false, 0) UIColor.networkingColor().setFill()// your color UIRectFill(rect) let image:UIImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() let navBar = UINavigationBar.appearance() navBar.setBackgroundImage(image, forBarMetrics: .Default) 

esto funciona para mi