Quando estou navegando para frente e para trás entre os controladores pai e filho em um controlador de navegação mestre-detalhe, vejo uma sombra escura no lado direito da barra de navegação na parte superior. Tudo começou depois que atualizei para o Xcode 5.1. É uma sensação áspera e perturbadora. Como posso me livrar disso?
91
darkColor
visualização ainda está lá e causa este problema.consertou
fonte
navigationController.view.backgroundColor = .white
não funciona mais no iOS 11.navigationController.view.backgroundColor = .white
funciona no iOS 12. Remover translúcido da barra de navegação não pode ser usado em situações quando é necessário, mas a sombra preta não é.a resposta de nonamelive é perfeita. Para obter a mesma coisa no Interface Builder E AINDA MANTER A TRANSLUCÊNCIA , selecione o controlador de navegação e defina um atributo de tempo de execução definido pelo usuário
view.backgroundColor
como mostrado na captura de tela (no Inspetor de Identidade). Repita para todos os controladores de navegação que apresentam este problema.Parece que todo esse problema ocorre porque a cor preta (ou, na verdade, nenhuma cor) de UINavigationController está vazando no momento em que o CoreGraphics faz um instantâneo dele no início da animação. Portanto, defini-lo como branco impedirá isso.
fonte
UINavigationController
ativado, não no viewController.Este parece ser um bug que foi introduzido no iOS 7.1. No meu caso, é causado por uma UIToolbar colocada diretamente abaixo da barra de navegação. A sombra escura também aparece na barra de guias translúcida.
A sombra parece ser causada pela visualização do plano de fundo do UIToolbar. Agora, uso esta solução alternativa no controlador de visualização com a barra de ferramentas que oculta a visualização do plano de fundo da barra de ferramentas durante a transição:
Este é o código para
[UIView findViewRecursively:]
Eu preenchi este Radar: http://openradar.appspot.com/16418845
fonte
backgroundView
.[self.toolbar valueForKey:@"_backgroundView"]
. Observe que esta é uma API privada, mas acho que você não será pego pela Apple porque_backgroundView
é apenas um nome genérico.Parece acontecer com qualquer barra (TabBar ou ToolBar) que é translúcida.
Portanto, uma maneira de corrigir isso é definir o
_tabBar.translucent = NO;
(no meu caso). Isso evita a sombra indesejada sob a barra de navegação superior, deixando a barra de navegação translúcida. Infelizmente, a barra inferior não é mais translúcida.Pode ser definido de volta para translúcido, mas tudo isso tem que acontecer depois que toda a animação de empurrar for concluída, portanto, a alteração dessa propriedade é bem perceptível.
No caso, no entanto, a barra inferior também deve ser translúcida e não quero que o usuário veja a alteração, resolvi com o seguinte:
Então, no
viewDidAppear:
eu simplesmente reverto isso:Há apenas uma pequena mudança na aparência, especialmente, mas é quase imperceptível e é muito melhor do que ter a sombra sob a barra de navegação.
Espero que ajude outras pessoas a manter as barras translúcidas até que a Apple conserte esse comportamento, já que as barras SÃO destinadas a ficar ocultas em alguns casos, ao contrário do que foi sugerido em outros posts especialmente para o
UITabBar
fonte
view.backgroundColor
para seu UITabBarController no storyboard e configurá-lo para uma cor branca.Isso funciona para mim no Swift
Em
AppDelegate
nodidFinishLaunchingWithOptions
método, eu definir esta:fonte
Isso funciona para mim no iOS 13 com temas claros e escuros e também em versões mais antigas do iOS.
Adicione o seguinte código ao AppDelegate ao
application(didFinishLaunchingWithOptions)
método:fonte
Aqui está minha variação ... requer muito menos código do que a resposta do tom e é mais eficiente. Isso é SE você quiser uma barra de navegação translúcida e também corrigir o problema de sombra.
No ViewController de origem (que está embutido no Controlador de navegação) ...
e
O resultado é o mesmo que Tom faz (visualmente, para o usuário final) e é mais fácil de implementar. Espero que isto ajude...
fonte
Isso funciona para mim, colocando-o dentro da função onde você empurra o novo ViewController
fonte
O seguinte também funciona e deixa a barra de navegação transparente:
[UIApplication sharedApplication].keyWindow.backgroundColor = [UIColor whiteColor];
fonte
Embora não seja igual à implementação padrão do iOS, esta é uma boa maneira de corrigir o problema:
Você obterá uma bela animação fade-in / fade-out da barra de guias. Adicione o código na raiz
UIViewController
.fonte
Ou se você estiver usando o construtor de interface, você pode apenas selecionar Barra de Navegação em seu controlador de navegação e desmarcar a caixa de seleção Translúcida entre Estilo e Matiz de Barra no Inspetor de Atributos para se livrar daquele efeito estranho -
fonte