web-dev-qa-db-fra.com

Problème de cadre ios 7 UiView

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.

iOS 6 Screenshot

iOS 7 Screenshot

33
PK86

Vous devez utiliser la ligne ci-dessous pour le corriger dans votre vue.

 self.edgesForExtendedLayout = UIRectEdgeNone;
53
sinh99

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 ;
14
PK86

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;
8
hema

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.

5
Tafkadasoh

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;
5
djneely
if([self respondsToSelector:@selector(edgesForExtendedLayout)])
    [self setEdgesForExtendedLayout:UIRectEdgeBottom];
3
Ritesh verma