UISearchBar sobrepõe barra de status no iOS
Eu (assim como todos os outros aqui) estou correndo para o mesmo problema de sobreposição da Barra de Status que todo mundo está, com uma pequena reviravolta, e é por isso que eu abro uma nova pergunta sobre isso.
Parece haver algum mecanismo que permite ao UISearchBar saber onde se posicionar, o que étotalmente fora de sintonia.
jaredsinclair responder aqui (Barra de status do iOS 7 de volta ao estilo padrão do iOS 6 no aplicativo para iPhone?), explica detalhadamente como os engenheiros da Apple nos permitem introduzir lógica ao nosso aplicativo para misturar o máximo possível com o ambiente do usuário.
Eu passei pelo processo de examinar cuidadosamente cada UIViewController no meu aplicativo e fazer a menor modificação possível.
Na maioria dos casos, consegui resolver o problema usando o código abaixo, que encontrei em várias respostas do SO
// Do any additional setup after loading the view.
if ([self respondsToSelector:@selector(edgesForExtendedLayout)]){
self.edgesForExtendedLayout = UIRectEdgeNone;
}
No entanto, isso não funcionaria, não importa o que eu faça em uma determinada exibição em que a UINavigationBar esteja oculta.
Com base na solução encontrada no SO, resolvi esse problema adicionando a seguinte lógica a esse UIViewController específico
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
viewFrame.origin.y = viewFrame.origin.y+statusBarFrame.size.height;
}
Isso empurra o UIViewControllern pixels abaixo "dependendo" da altura da barra de status.
O efeito disso é mostrar aqui
O problema é que, quando eu entro no campo de pesquisa, o UISearchBar adiciona um preenchimento de 20px no topo, o que compensa a IU inteira.
Isso me leva à conclusão de que o UISearchBar tenta se ajustar e, por coincidência, ajusta-se exatamente a mesma quantidade que a altura da barra de status.
Se eu não hackear a posição, quando eu entrar no campo de pesquisa, esse ajuste automático alinha o UISearchBar nitidamente abaixo da barra de status.
Espero ter detalhado minha confusão, estou me perguntando se alguém tem alguma idéia para uma solução.