J'exécute la même application dans iOS6 et iOS7 qui a NavigationBar.Il fonctionne bien sur iOS6, mais dans iOS7, toute la vue est un peu comme si elle ne considérait pas du tout la barre de navigation.
J'ai essayé de changer la propriété de la barre supérieure dans l'option de mesures simulées, mais cela ne fonctionne pas. Il considère la position du bouton de NavigationBar dans iOS6, mais dans iOS7, il le considère du haut de l'écran.
Quelle en est la raison?
Merci d'avance.
Vous devez utiliser la ligne ci-dessous pour le corriger dans votre vue.
self.edgesForExtendedLayout = UIRectEdgeNone;
Dans le "Guide de transition de l'interface utilisateur iOS 7" pour la mise en page et l'apparence, un également mentionné - dans iOS7 dans, les contrôleurs de vue utilisent la mise en page plein écran.
Si nous voulons que la vue montre l'emplacement suivant dans la barre de navigation, vous pouvez modifier les bords de la propriété UIViewController pour obtenir cette propriété.
bordsForExtendedLayout est un attribut de type UIExtendedEdge qui spécifie la direction du bord à étendre.
Étant donné qu'iOS7 encourage la mise en page plein écran, sa valeur par défaut est naturelle d'être UIRectEdgeAll, s'étendant tous les deux autour du bord, c'est-à-dire que s'il y a même la vue navigationBar, sous tabBar, la vue étendra la couverture à la zone environnante.
Si nous faisons la vue des paramètres suivants, la vue ne sera pas étendue à ceux derrière la barre, donc l'étiquette est sortie. Afficher la source d'impression
self . edgesForExtendedLayout = UIRectEdgeNone ;
Dans iOS 7, les contrôleurs de vue utilisent une disposition plein écran. il est mentionné dans iOS 7 UI Transition Guide
si vous voulez changer la mise en page, utilisez la propriété edgeForExtendedLayout
exemple:
if([UIViewController instancesRespondToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout=UIRectEdgeNone;
Au moment de cette réponse, iOS 7 était toujours sous NDA, il n'était donc pas possible d'écrire la solution réelle. Pour aider de toute façon, j'ai publié un lien d'aide disponible uniquement pour les développeurs enregistrés.
==== Message d'origine: ====
Lisez le iOS 7 Transition Guide . Sa section "Mise à jour de l'interface utilisateur" explique comment résoudre votre problème.
J'ai moi-même eu un problème similaire et j'ai constaté que si vous désactivez la translucidité de la barre de navigation, les vues chuteront de la même manière que dans iOS6.
self.navigationController.navigationBar.translucent = NO;
if([self respondsToSelector:@selector(edgesForExtendedLayout)])
[self setEdgesForExtendedLayout:UIRectEdgeBottom];