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];
Dans les versions antérieures, cela fonctionne correctement. La barre de recherche apparaît sous la statusbar
barre de navigation et. Le tableview
apparaît sous la barre de recherche
Mais lorsque je l'exécute Xcode 5 sdk iOS 7
, la barre de recherche n'est pas visible (je pense qu'elle est placée sous la barre d'état et la barre de navigation), et la barre de navigation apparaît également sur la vue du tableau.
Sera-t-il corrigé avec iOS 7
une version stable?
Ou est-ce le problème de mon codage?
Ou devrions-nous le gérer en ajoutant la (y = statubar height + nav bar height)
valeur y pour iOS 7
?
J'ai récemment téléchargé Xcode 5 DP pour tester mes applications sous iOS 7. La première chose que j'ai remarquée et confirmée est que les limites de ma vue ne sont pas toujours redimensionnées pour tenir compte de la barre d'état et de la barre de navigation.
Dans viewDidLayoutSubviews, j'imprime les limites de la vue:
{{0, 0}, {320, 568}}
Cela fait apparaître mon contenu sous la barre de navigation et la barre d'état.
Je sais que je pourrais expliquer moi-même la hauteur en obtenant la hauteur de l'écran principal, en soustrayant la hauteur de la barre d'état et la hauteur de la barre de navigation, mais cela semble être un travail supplémentaire inutile.
Est-ce que quelqu'un d'autre a rencontré ce problème?
METTRE À JOUR:
J'ai trouvé une solution à ce problème spécifique. Définissez la propriété translucide de la barre de navigation sur NON:
self.navigationController.navigationBar.translucent = NO;
Cela empêchera la vue d'être encadrée sous la barre de navigation et la barre d'état.
Cependant, je n'ai pas trouvé de solution pour le cas où vous souhaitez que la barre de navigation soit translucide. Par exemple, en regardant une photo en plein écran, je souhaite que la barre de navigation soit translucide et que la vue soit encadrée en dessous. Cela fonctionne, mais lorsque je bascule l'affichage / le masquage de la barre de navigation, j'ai eu des résultats encore plus étranges. La première sous-vue (a UIScrollView
) voit ses limites et son origine changées à chaque fois.