Restaurar la apariencia de la barra de navegación predeterminada
Estoy haciendo una aplicación de iOS para iPhone y estoy usando un controlador de navegación. En algún momento durante la navegación, estoy agregando unUISegmentedControl
a un controlador de vista, justo debajo de la barra de navegación desde el controlador de navegación. Estoy insertando nuevas imágenes de fondo y sombras en la barra de navegación, para que elUISegmentedControl
aparecer como parte de la barra de navegación. Lo hago así:
// nav bar color image
let rect = CGRectMake(0, 0, view.frame.width, 0.5) // Used in navBar, size dosn't matter
UIGraphicsBeginImageContextWithOptions(rect.size, true, 0)
barBackgroundColor.setFill()
UIRectFill(rect)
let navBarBackground = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
// setup navbar
navigationController!.navigationBar.setBackgroundImage(navBarBackground, forBarMetrics: .Default)
navigationController!.navigationBar.shadowImage = UIImage()
navigationController!.navigationBar.tintColor = UIColor.blackColor()
navigationController!.navigationBar.translucent = false
Cuando navego fuera de ese controlador de vista dado, el fondo de las barras de navegación todavía cambia.
¿Cómo puedo restaurar la apariencia de las barras de navegación?
O...
¿Hay otra forma de incrustar elUISegmentedControl
en una barra de navegación expandida?
Imagen de la barra de navegación con fondo personalizado y control segmentado a continuación:
Al navegar hacia atrás, la barra de navegación sigue siendo personalizada:
EDITAR:
En un controlador de vista antes de cambiar las imágenes de fondo, trato de proteger la imagen estándar:
override func viewDidAppear(animated: Bool) {
if sharedVariables.standartNavBarBackgroundImage == nil {
let herp = navigationController!.navigationBar.backgroundImageForBarMetrics(.Default)
sharedVariables.standartNavBarBackgroundImage = herp
let derp = navigationController!.navigationBar.shadowImage
sharedVariables.standartNavBarShadowImage = derp
}
}
Ambosherp
yderp
sonnil
después de configurarlo, la barra de navegación está visible en esta ventana. ¿Cómo?