7
votes

Disposition automatique - 5 boutons au centre

J'essaie d'entrer dans l'entreprise de mise en page automatique, mais je le trouve un peu dur.

J'essaie d'obtenir 5 vues d'image à afficher les unes des autres au centre de la vue. Ils doivent également se redresser pour élargir leur hauteur / largeur.

Voici comment il regarde IB (et un peu la façon dont il a besoin de regarder lors de l'exécution de l'application): ib de vues

J'ai donc les contraintes suivantes:

  • Ajout du rapport de format ajouté de 1: 1 afin qu'ils soient toujours carrés
  • premier bouton est "étreindre" le côté gauche de la vue, de sorte qu'il sera affiché sur le côté.
  • Les 4 boutons suivants ont un espacement horizontal sur le bouton à côté d'eux
  • Chaque bouton a une contrainte au sommet et au bas de l'écran, de sorte qu'ils deviendront plus gros si vous redimensionnez l'écran.

    Cependant, quand je l'exécute, cela ressemble à ceci: résultats

    Et je suis un peu fatigué ici. Qu'est-ce que je fais mal?

    Merci d'avance, Cordialement - / JBJ

    ** Modifier ** J'ai ajouté une contrainte de fin au dernier bouton. Cela garantit qu'ils sont tous dans l'écran, mais c'est un peu problématique lorsqu'il y envisage de la taille, de sorte que cela ne la résoudait pas non plus. Ajout de la fuite au dernier bouton

    * éditer edit * Essayé de retirer la contrainte supérieure et inférieure, car ils sont ceux qui forçaient la taille. A ajouté une contrainte de centre verticale à tous. Cela ne fonctionnera pas non plus. Les affichant très petits (aligné bien, mais trop petit) et vient également avec des avertissements: in ib

    in simulateur


4 commentaires

Essayez de corriger la contrainte de fuite pour la bonne vue de l'image


J'ai essayé ça, ne fonctionne toujours pas. Voir Modifier pour les résultats


Retirez les contraintes supérieure et inférieure et juste les centrer verticalement dans la vue. Il s'agit des contraintes supérieures et inférieures qui dimensionnent vos boutons. Laissez-les être dimensionnés par la façon dont ils conviennent horizontalement.


Malheureusement, cela ne fonctionne pas non plus. Cela les affiche simplement très petit, mais vient également avec un avertissement. Voir Modifier pour son apparence.


4 Réponses :


2
votes

Pour les placer au centre de l'écran, utilisez verticalement

NSLayoutConstraint *constraintHorizontal = [NSLayoutConstraint constraintWithItem:self
                                                                    attribute:NSLayoutAttributeCenterY 
                                                                    relatedBy:NSLayoutRelationEqual
                                                                       toItem:self.superview 
                                                                    attribute:attribute 
                                                                   multiplier:1.0f
                                                                     constant:0.0f];


1 commentaires

Était un peu cherche une façon de le faire dans IB afin que je puisse avoir le pendre.



22
votes

OK, voici ...

  1. Ajouter 5 boutons à la vue ... Pas de contraintes.

    Entrez la description de l'image ici

    1. Ajoutez des contraintes d'espace horizontales entre elles toutes. Ajoutez également des contraintes de la première et dernière vue à la supervishe. J'ai aussi changé la dernière contrainte à 0 (remarquez le +306 me disant qu'il est actuellement hors de propos).

      Entrez la description de l'image ici

      1. Sélectionnez tous les boutons et (à l'aide du bouton Ajouter une contrainte) Entrez la description de l'image ici Ajouter "Largeurs égales" au centre commercial. Remarquez le contour en pointillé orange me disant qu'ils auront maintenant une largeur égale.

        Entrez la description de l'image ici

        1. Alignez-les maintenant dans le centre vertical de la vue avec ce bouton ...

          Entrez la description de l'image ici

          Entrez la description de l'image ici

          1. La dernière chose à faire est d'aller à chacun et ajoutez le rapport 1: 1. Vous devrez ajouter la contrainte, puis le modifier à un ratio 1.

            Entrez la description de l'image ici

            Assurez-vous de mettre à jour les cadres une fois que vous avez terminé pour repositionner les boutons à leurs nouvelles contraintes ...

            Entrez la description de l'image ici

            L'écran de prévisualisation affiche ce fonctionnement à toutes les tailles différentes ...

            Entrez la description de l'image ici


12 commentaires

Mais quelle différence cela fait-il si je les mettais dans une autre vue sur le conteneur? Pourquoi ne puis-je pas simplement utiliser l'opinion qu'elles sont maintenant comme la vue du conteneur? Les contraintes devraient être les mêmes? Et je crois avoir besoin de cela depuis que je dois les faire changer de largeur et de hauteur?


@ user3625855 Ouais, tu as raison et je pensais que moi-même. Oubliez la vue du conteneur. Vous devez avoir quatre choses. Premier bouton contraint au bord gauche. Dernier bouton contraint au bord droit. Les boutons ont tous des largeurs égales. Espaces entre les boutons contraints.


Merci beaucoup pour essayer d'aider, mais cela ne fonctionnera toujours pas. Il est clair que je manque quelque chose. J'ai ces contraintes: la plupart des boutons contraintes au bord gauche Tous les boutons ont une contrainte d'espacement horizontale droite-tout-la fois contrainte au bord droit maintenant, il faut également une contrainte sur la coordonnée Y. Je suppose que je pouvais juste prendre une contrainte au sommet sur chacun d'entre eux. Ensuite, j'ai défini le rapport qualité-prix sur 1: 1 pour vous assurer qu'ils sont carrés. Mais cela ne fonctionnera pas? Pouvez-vous peut-être montrer un exemple? Je n'ai aucune idée de ce qui me manque.


Yaaaaay !!! Merci si freaking beaucoup! Cela a beaucoup de sens lorsque vous l'avez fait, mais je ne pouvais pas pour la vie de moi la comprendre! Je vous salue et merci de m'avoir permis de me laisser tomber avec ma vie. Off Pour acheter un chapeau pour couvrir les taches chauves maintenant. :)


C'était extrêmement utile! Merci!


J'ai besoin d'une aide dans l'autolayouet de 5 uiview horizontalement avec une distance égale entre eux comment puis-je faire ce @FogMeister


@ DILIPTIIPTIWARI Utilisez UISTACDView.


@Diliptiwari uistackview est la nouvelle manière préférée d'utiliser la mise en page automatique. / La vue sur la pile crée les contraintes pour vous. Utilise le :)


Je sais que je suis en train d'utiliser iOS8, ce n'est pas possible pour moi de la mettre à niveau vers iOS 9 pour soutenir Uistackview pls aidez-moi @fogmeister


@Diliptiwari oh ... je vois. Eh bien, ma réponse montre comment faire ce que vous essayez de faire.


mais en fait je ne suis pas correctement @fogmeister


Laissez-nous Continuez cette discussion en chat .



0
votes

Ce que je fais toujours dans une telle situation est tout simplement penser. Combien de contraintes dois-je avoir besoin pour définir à 100% la conception? Que devrais-je écrire pour dire à quelqu'un au téléphone à quoi cela ressemble?

Dans votre cas, ce sont les contraintes suivantes (espérons que je ne pourrai pas oublier une)

  • Ce sont tous des carrés (hauteur égale de largeur, pas une valeur)
  • Ils ont une taille égale, il suffit de le mettre à égal, pas à une valeur
  • espacement horizontal entre les éléments et le bord, réglez-le sur la taille fixe
  • Verticalement centrée

4 commentaires

Oui d'accord ça a du sens. Tout simplement pas sûr des 2 premiers points: tous les carrés, donc la largeur / hauteur égale, pas une valeur? C'est le rapport d'aspect 1: 1 partie, non? Donc, je viens de définir le premier bouton pour avoir un rapport d'aspect 1: 1 et l'autre pour avoir égal à cela?


@FogMeister tu voulais ajouter une autre vue, c'est pourquoi je t'ai bownvote, mais ATM ta réponse est le meilleur de sorte que vous avez eu mon upvote.


@Simon ouais je pensais à un autre centre d'aligner (où vous les centrifiez entre deux vues). Quoi qu'il en soit, je me suis rendu compte après avoir soumis cela que j'avais mal, c'est pourquoi j'ai édité.


@ user3625855 Je vous suggère de supprimer toutes vos contraintes et de suivre les étapes de FogMeister



0
votes
  1. Placez 5 boutons verticalement et horizontalement à UIView

  2. sélectionnez tous et intégrez-les dans une vue sur la pile

  3. changer de distribution pour remplir de manière égale.

  4. Ajustez l'espacement dans l'inspecteur d'attributs pour faire de la place entre les boutons.

  5. Ajouter une contrainte d'espace et de hauteur avancée et de hauteur à la vue sur la pile. Aussi l'aligner verticalement.

     Entrez la description de l'image ici


0 commentaires