CGRect cgRect1 = [[UIScreen mainScreen] applicationFrame];
UISearchBar *mySearchBar = [[UISearchBar alloc]
initWithFrame:CGRectMake(0, 0, cgRect.size.width, 40)];
mySearchBar.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight ;
UITableView *myTableView = [[UITableView alloc]
initWithFrame:CGRectMake(0, 40, cgRect.size.width, cgRect.size.height-40)];
myTableView.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
[self.view addSubview:mySearchBar];
[self.view addSubview:myTableView];
Nas versões anteriores, ele está funcionando corretamente. A barra de pesquisa está aparecendo abaixo da statusbar
barra de navegação e. O tableview
está aparecendo abaixo da barra de pesquisa
Mas quando eu executo isso Xcode 5 sdk iOS 7
, a barra de pesquisa não fica visível (acho que está localizada abaixo da barra de status e da barra de navegação), e também a barra de navegação está aparecendo sobre a visualização da tabela.
Será corrigido com iOS 7
uma versão estável?
Ou é o problema da minha codificação?
Ou devemos lidar com isso adicionando o (y = statubar height + nav bar height)
valor de y para iOS 7
?
Recentemente baixei o Xcode 5 DP para testar meus aplicativos no iOS 7. A primeira coisa que notei e confirmei é que os limites de minha visualização nem sempre são redimensionados para levar em conta a barra de status e a barra de navegação.
Em viewDidLayoutSubviews, imprimo os limites da visualização:
{{0, 0}, {320, 568}}
Isso faz com que meu conteúdo apareça abaixo da barra de navegação e da barra de status.
Eu sei que poderia contabilizar a altura sozinho obtendo a altura da tela principal, subtraindo a altura da barra de status e da barra de navegação, mas isso parece um trabalho extra desnecessário.
Alguém mais experimentou esse problema?
ATUALIZAR:
Eu encontrei uma solução para este problema específico. Defina a propriedade translúcida da barra de navegação como NÃO:
self.navigationController.navigationBar.translucent = NO;
Isso corrigirá o enquadramento da visualização abaixo da barra de navegação e da barra de status.
No entanto, não encontrei uma solução para o caso em que você deseja que a barra de navegação seja translúcida. Por exemplo, ao visualizar uma foto em tela inteira, desejo que a barra de navegação seja translúcida e a visualização emoldurada abaixo dela. Isso funciona, mas quando alterno para mostrar / ocultar a barra de navegação, tenho resultados ainda mais estranhos. A primeira subvisualização (a UIScrollView
) obtém seus limites y origem alterada a cada vez.