iOS – Utilisation du storyboard et de l'autolayout pour centrer l'UIScrollView

Je crée une application iOS en utilisant le story-board et la layout automatique afin que cela fonctionne bien sur iPhone4 et iPhone5. Voici la capture d'écran de la vue que je crée en utilisant le story-board.

entrez la description de l'image ici

Dans l'image ci-dessus, je veux conserver la vue défilée au milieu du bord avant de la vue de dessus et de la vue de la table de droite. Je ne veux pas que la vue déroulante augmente sa largeur dans iPhone5. J'ai essayé différentes combinaisons de contraintes, mais je n'ai pas pu y arriver.

Est-ce que certains peuvent me suggérer quelles sont toutes les contraintes que je dois définir pour la vue déroulante afin qu'elle soit au centre.

Vous devrez le faire en ajoutant une vue supplémentaire à l'écran.

En ce moment vous avez …

- UIView (main view) | | - scrollView | - tableView 

Vous devriez mettre la vue de défilement dans une autre vue comme celle-ci …

 - UIView (main view) | | - UIView (spacer View) | | - scrollView | | - tableView 

Maintenant, ce que vous pouvez faire, c'est avoir ces contraintes …

 spacer view leading edge constraint to super view = 0 spacer view trailing edge to table view leading edge = 0 table view width = (whatever the width is) table view trailing edge to super view = 0 

Cela affichera la vue de l'espaceur et la vue de la table de sorte que la vue de l'espaceur se développera.

Maintenant, vous devez append …

 scroll view width = x scroll view height = y scroll view centered vertically in super view scroll view centered horizontally in super view. 

Maintenant, parce que la super vue de la vue défilante est la vue de l'espaceur, elle sera toujours cinput entre la vue de la table et le rest de l'espace.

Comment centrer une vue sur le storyboard

Cette réponse a été mise à jour pour Xcode 8.

Cette réponse s'adresse aux personnes qui searchnt simplement comment centrer les choses à l'aide d'un storyboard et ne include pas les contraintes.

Je suppose que vous utilisez un Storyboard (pas les files XIB) et la layout automatique. C'est par défaut de nos jours, donc si vous ne savez pas ce que cela signifie, ne vous inquiétez pas à ce sujet. Si vous voulez vérifier, cependant, vous pouvez cliquer sur Main.storyboard dans le browser de projet, puis sur l'inspecteur de files. Vous pouvez vous assurer que Use Auto Layout est activé:

entrez la description de l'image ici

Sélectionnez votre button (ou toute autre vue que vous souhaitez centrer) sur le storyboard. Puis click le button d'alignment en bas à droite. Sélectionnez "Horizontalement dans le conteneur" et "Verticalement dans le conteneur". Cliquez sur "Ajouter 2 contraintes".

entrez la description de l'image ici

Si ce n'était pas parfaitement centré, vous devrez peut-être faire encore une chose. Cliquez sur le button "Mettre à jour les frameworks" qui est deux à gauche du button d'alignment. Votre vue devrait maintenant être cinput sur le storyboard.

entrez la description de l'image ici

Et plus important encore, maintenant, lorsque vous exécutez votre application, il devrait être centré, peu importe la taille de l'appareil que vous utilisez.

J'ai initialement appris cela à partir de la création de l'interface user – Mise en page automatique . L'idée de base est toujours la même, mais l'arrangement de l'interface user a changé un peu dans Xcode maintenant.

Voir également

  • Comment définir des contraintes par programme