219 votes

iOS 7 : UITableView s’affiche sous la barre d’État

Le premier écran de mon application est un UITableViewController sans barre de navigation, ce qui signifie que le contenu des flux en vertu de la barre d'état, donc il y a beaucoup de texte collisions. J'ai ajusté à la fois les propriétés d' Under top bars et Adjust scroll view insets qui ne fait arrêter de défiler sous, mais au prix de garder le haut de la vue de la table. J'ai tenté de définir l' UITableView cadre de compenser par 20 pixels, mais il ne semble pas faire effet, et comme je l'ai actuellement besoin de l'application pour être compatible avec iOS 6, je ne peux pas sauter à iOS 7 story-boards pour forcer la mise en page automatique pour utiliser le haut à la hauteur de guide. Quelqu'un a trouvé une solution qui fonctionne pour les deux versions?

Les choses que j'ai essayé: paramètre edgesForExtendedLayout, la modification des paramètres à l'intérieur de Storyboard pour Under top bars et Adjust scroll view, forçant le cadre d'une nouvelle zone.

Une image vaut mille mots: Status bar flow under

366voto

marinosbern Points 1533

Pour quiconque s'intéresse à la reproduction de cette, ce problème est très facile à reproduire: créer un nouveau projet et de supprimer la valeur par défaut ViewController et de le remplacer avec un TableViewController que vous faites glisser dans le Storyboard à partir de la Bibliothèque d'Objets. Si vous suivez ces étapes, vous verrez que rien, y compris de peaufinage Xcode de cases à cocher pour "Étendre les Bords Sous {Haut, Bas, Opaque} Bars", ainsi que l'utilisation de

self.edgesForExtendedLayout=UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars=NO;
self.automaticallyAdjustsScrollViewInsets=NO;

place de l' UITableView - dessous de la barre d'état.

Ce problème peut être très frustrant, et je crois que c'est un bug d'Apple en fin de compte, surtout parce qu'il montre dans leur propre pré-câblé TableViewController à partir de la bibliothèque d'objets.

Je suis en désaccord avec tout le monde qui est en train d'essayer de résoudre ce problème en utilisant toute forme de "Nombres Magiques" par exemple "utiliser un delta de 20px". Ce genre de étroitement associée de programmation n'est certainement pas ce que Apple veut que nous faisons ici.

J'ai découvert deux solutions à ce problème:

  • La préservation de l' TableViewController's de la scène: Si vous souhaitez garder le TableViewController dans la table de montage séquentiel, sans manuellement en le plaçant dans un autre point de vue, vous pouvez intégrer l' TableViewController dans une manette de Navigation (Éditeur > Incorporer Dans > manette de Navigation) et décochez la case "Affiche la Barre de Navigation. Cela résout le problème, sans aucun supplément de peaufiner nécessaire, et elle préserve également vous TableViewController de la scène dans la table de montage séquentiel

  • À l'aide de mise en page automatique et l'intégration de la TableView en un autre point de vue (je crois que c'est la façon dont Apple veut nous le faire): Créer un vide ViewController et faites glisser votre UITableView . Ensuite, appuyez sur la touche Ctrl de votre TableView vers la barre d'état. Comme la souris vers le bas de la barre d'état, vous verrez une mise en forme automatique de la bulle qui dit "Haut de page". Relâchez la souris et choisissez "espace Vertical". Qui dira le système de mise en page pour le placer juste en dessous de la barre d'état.

J'ai testé les deux sur une application vide et ils travaillent tous les deux. Vous devrez peut-être faire quelques extra réglages à faire travailler pour votre projet.

86voto

lipka Points 295

Si vous font des choses par programmation et que vous utilisez un sans un votre meilleur pari est de faire ce qui suit `` :

Le `` , vous verrez toujours apparaître derrière la barre d’État mais ne sera pas sous lui lors du défilement vers le haut.

24voto

Stunner Points 3580

J’ai créé mon avis par programme et cela a fini par travailler pour moi :

Source (dans la section topLayoutGuide au bas de pg.39).

11voto

Olzh Points 91
<pre><code></code><p><a href="https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/SupportingEarlieriOS.html#//apple_ref/doc/uid/TP40013174-CH14-SW1" rel="nofollow">https://developer.Apple.com/library/iOS/documentation/userexperience/Conceptual/TransitionGuide/SupportingEarlieriOS.html#//apple_ref/doc/UID/TP40013174-CH14-SW1</a></p></pre>

7voto

Abrahamchez Points 41

Réponse d’Apple sur c’est cette technique Q & A... : https://developer.apple.com/library/ios/qa/qa1797/_index.html

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