J'ai besoin de créer trois colonnes dynamiques, chacune avec un pourcentage fixe de la largeur totale. Pas des tiers, mais des valeurs différentes. Par exemple, l'illustration suivante montre trois colonnes: la première étant de 42% de large, la seconde de 25% de large et la troisième de 33% de large.
Pour un contrôleur de vue de 600 pixels, ce serait respectivement 252, 150 et 198 pixels.
Cependant, pour toutes les tailles d'affichage ultérieures (c'est-à-dire iPhone 4 paysage (960 de large) ou iPad 2 portrait (768 de large), je voudrais que les pourcentages relatifs soient les mêmes (pas les largeurs de pixels citées ci-dessus).
Existe-t-il un moyen de faire cela en utilisant des Storyboards (c'est-à-dire sans code)? Je peux le faire facilement dans le code, mais mon objectif est de mettre autant de logique d'affichage que possible dans le Storyboard.
la source
En introduisant UIStackView, Apple a rendu le travail beaucoup plus facile.
Méthode 1: Utilisation de Nib / StoryBoard:
Vous devez simplement ajouter trois vues dans le générateur d'interface et les intégrer dans stackview
Sélectionnez stackView et donnez une contrainte avec des hauteurs de début, de fin, de haut et d'égale avec safeArea
Cliquez sur la zone de l'inspecteur d'attributs et définissez StackView horizontalement et distribution pour remplir proportionnellement
[ 3
Donner la contrainte de trois vues avec des côtés de début, de fin, de haut et de bas avec les côtés respectifs.
Méthode 2: par programmation:
Production:
Fonctionne avec paysage et portrait
Projet de démonstration - https://github.com/janeshsutharios/UIStackView-with-constraints
https://developer.apple.com/videos/play/wwdc2015/218/
la source
Je pense que cela peut être expliqué plus en détail afin qu'il puisse être plus facilement appliqué à n'importe quel nombre de vues nécessitant des mises en page à pourcentage fixe dans un superview.
Vue la plus à gauche
SuperView.Leading
SuperView.Height
Vues intermédiaires
SuperView.Height
left
à droite de son voisinVue la plus à droite
left
à droite de son voisinright
àSuperView.Trailing
Toutes les vues
Top Layout Guide.Top
etTop Layout Guide.bottom
. Dans la réponse ci-dessus, il est à noter que cela peut également être fait en définissant une hauteur égale à la vue voisine.la source