-1
votes

Divisez l'espace pour deux vues en fonction du pourcentage

J'ai donc une vue:

 Entrez la description de l'image ici

J'ai les deux vues dans une vue sur la pile, en utilisant le storyboard.

Je reçois deux valeur dans la zone ViewController, et je souhaite que chacune de la taille de la vue correspond au pourcentage qu'ils représentent de la somme des deux.

EX: la taille de la Stackview est 100, si je reçois 700 et 300, la taille de la vue sera de 70 et 30

merci


7 commentaires

@rbaldwin oui je fais


@rbaldwin à l'aide de storyboard


@RBALDWIN non, je reçois comme deux valeurs EX 2500 et 3600, et je dois dimensionner les deux visualisation relativement des valeurs que je reçois. Comme si l'ensemble Stackview serait de 100%, puis les deux cumulés seraient l'ensemble de la Stackview


Pouvez-vous mettre à jour votre question pour clarifier cela s'il vous plaît.


Sûr. Ce serait génial si vous pouviez m'apporter de l'aide


@Cublax - Vous avez dit "à l'aide de storyboard" mais vous avez également dit "Je reçois deux valeurs ex 2500 et 3600" ... Où / quand obtenez-vous ces deux valeurs ?


@Donmag i Obtenez ces 2 valeurs dans la vue Concontroller et je dois redimensionner les deux vues en fonction du rapport que chacun d'entre eux représente sur leur somme.


3 Réponses :


0
votes

Ces vues sont-elles dans un uistackview? Si tel est le cas, vous devez juste mettre une contrainte sur leurs hauteurs.

faire View1.Height = * multiplicateur * x View2.Height .

Vous pouvez facilement calculer le multiplicateur hors de votre pourcentage, comme multiplicateur = pourcentage2 / pourcentage1 .

donc dans votre exemple multiplicateur = 50/50 = 1 . Si vous le souhaitez, dites 30% / 70%, effectuez le multiplicateur = 70/30 = 2.333 .


1 commentaires

Je ne comprends pas, disons TopView La valeur est 201600 et la vue de dessous = 50400. Qu'est-ce que vous écrivez concrètement. Parce que ça ne marche pas et je n'obtiens pas où est le problème. Aussi le problème est que déjà vous y accédez comme si topview.frame.size.height, et le stiplier ne fonctionne que si c'est un cmpoint



3
votes

dans Storyboard:

  • Mettez les deux vues dans une vue sur la pile li>
  • Définir la vue sur la pile à
    • Axe: Vertical Li>
    • Alignement: Remplissez LI>
    • Distribution: Remplir Li>
    • espacement: 0 (ou quel que soit l'espacement que vous voulez) li> ul> li>
    • Donnez la vue sur la pile:
      • Contraintes Top / Bas / Madard / Fonction / Li>
      • ou de la largeur, de la hauteur et des contraintes de position li> ul> li>
      • Ctrl-glisser de la vue inférieure sur la vue de dessus li>
      • Sélectionnez des hauteurs égales, avec un multiplicateur de 1 (peu importe, comme cela sera modifié dans le code) LI> ul>

        dans votre contrôleur d'affichage, créez un @iboutlet code> sur cette contrainte, telle que: p> xxx pré>

        Voici comment il regarde Storyboard: P>

         Entrez la description de l'image ici p>

        Nous ne pouvons pas modifier directement le multiplicateur, alors ajoutez cette extension à votre projet: P>

            let top: CGFloat = 200
            let bottom: CGFloat = 1500
        


0 commentaires

0
votes
  1. Mettez vos deux uIViews dans votre uistackview (axe vertical)
  2. créer un iboutlet pour votre uistackview
  3. Créer un Iboutlet pour votre haut uIView
  4. Définissez le uistackview Distribution sur fillequalally dans Storyboard aux avertissements de silence.
  5. dans votre code calculer le rapport de la vue de dessus
  6. Définissez la uistackview Distribution pour remplir
  7. Définissez le multiplicateur de hauteur de la vue de dessus par rapport au uistackview

    Le code: xxx


    Entrez la description de l'image ici


0 commentaires