33 votes

Problème de cadre ios 7 UiView

Je suis en cours d'exécution même application dans iOS6 et iOS7 qui a NavigationBar.Il fonctionne bien sur iOS6, mais dans iOS7, toutes vue est un peu comme ce n'est pas compte tenu de la barre de Navigation à tous.

J'ai essayé de changer topbar de la propriété et de simulation des métriques option, mais il ne marche pas. Il considère la position du bouton de NavigationBar dans iOS6, mais dans iOS7, il estime du haut de l'écran.

Quelle est la raison?

Merci à l'avance.

iOS 6 Screenshot

iOS 7 Screenshot

53voto

sinh99 Points 2275

Vous devriez utiliser la ligne ci-dessous pour résoudre le problème à votre avis.

  self.edgesForExtendedLayout = UIRectEdgeNone;
 

14voto

Pranesh231286 Points 373

Dans "iOS 7 de l'INTERFACE utilisateur Guide de Transition" pour la Mise en page et l'Apparence d'un aussi mentionné dans iOS7, voir utilisation de contrôleurs de la présentation en plein écran.

Si nous voulons que la vue montre l'emplacement suivant dans la barre de navigation, vous pouvez modifier la UIViewController de edgesForExtendedLayout cette propriété à atteindre.

edgesForExtendedLayout est un type UIExtendedEdge attribut spécifie l'orientation de l'arête à être étendu.

Parce que iOS7 encourager la présentation en plein écran, sa valeur par défaut est naturel d'être UIRectEdgeAll, les deux s'étendant autour de la périphérie, qui est, si il ya même la vue navigationBar, en vertu de la tabBar, puis la vue d'étendre la couverture de la zone environnante.

Si les paramètres de la vue, la vue ne sera pas étendue à ceux qui sont derrière le bar, de sorte que l'étiquette est sorti. L'Affichage De La Source D'Impression

self . edgesForExtendedLayout = UIRectEdgeNone ;

8voto

hema Points 159

Dans iOS 7, les contrôleurs de vue utilisent la disposition en plein écran. il est mentionné dans le Guide de transition de l'interface utilisateur iOS 7

si vous souhaitez modifier la mise en page, utilisez la propriété edgeForExtendedLayout

exemple:

    if([UIViewController instancesRespondToSelector:@selector(edgesForExtendedLayout)])

        self.edgesForExtendedLayout=UIRectEdgeNone;
 

5voto

Tafkadasoh Points 1958

Au moment de cette réponse, iOS 7 est encore sous NDA, donc il n'était pas possible d'écrire de la solution réelle. Pour aider de toute façon, j'ai posté un coup de lien disponible uniquement pour les développeurs enregistrés.

==== Original Post: ====

Lire l' iOS 7 Guide de Transition. Sa section 'mise à Jour de l'INTERFACE utilisateur explique comment résoudre votre problème.

5voto

djneely Points 105

J'avais moi-même un problème similaire et j'ai constaté que si vous désactivez la translucidité de la barre de navigation, les vues s'affichent de la même manière que dans iOS6.

 self.navigationController.navigationBar.translucent = NO;
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X