Restaurar a aparência padrão da barra de navegação
Estou criando um aplicativo iOS para iPhone e usando um controlador de navegação. Em algum momento da navegação, estou adicionando umUISegmentedControl
para um controlador de exibição, logo abaixo da barra de navegação do controlador de navegação. Estou inserindo novas imagens de plano de fundo e sombra na barra de navegação, para fazer oUISegmentedControl
aparecem como parte da barra de navegação. Eu faço assim:
// 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
Quando eu me afasto desse determinado controlador de exibição, o fundo das barras de navegação ainda é alterado.
Como posso restaurar a aparência das barras de navegação?
Ou...
Existe outra maneira de incorporar oUISegmentedControl
em uma barra de navegação expandida?
Imagem da barra de navegação com plano de fundo personalizado e controle segmentado abaixo:
Ao navegar de volta, a barra de navegação continua sendo personalizada:
EDITAR:
Em um controlador de exibição, antes de alterar as imagens de fundo, tento proteger a imagem padrão:
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
ederp
estãonil
depois de definido, apesar da barra de navegação ficar visível neste momento. Por quê?