J'aimerais cartographier les points le long d'une ligne.
La longueur de la ligne dépend de l'appareil et de l'orientation et est toujours étirée sur tout l'écran. Par conséquent, il serait plus logique pour moi de positionner les points en utilisant un pourcentage relatif valeur.
Jusqu'à présent, je n'ai trouvé que des contraintes définies dans une sorte de valeur en points ( Doc )
Est-il également possible d'utiliser des valeurs de pourcentage comme contraintes? Des idées sur la façon de positionner ces points de manière évolutive ... ou dois-je faire cette conversion/positionnement "manuellement"?
Oui, vous pouvez positionner le point sur une fraction de la largeur de la vue. La méthode NSLayoutConstraint, constraintWithItem: attribute: relatedBy: toItem: attribute: multiplier: constant :, possède ce paramètre multiplicateur qui vous permet d'utiliser une relation fractionnaire entre une vue d'ensemble et sa sous-vue. Le bord droit de la vue d'ensemble sera la largeur de cette vue (l'écran s'il s'agit d'une vue pleine largeur), donc si vous créez une contrainte comme ci-dessous, le point sera positionné à une distance fractionnelle le long de la ligne:
-(void)viewDidLoad {
[super viewDidLoad];
[self.view removeConstraint:self.leftConDark];
[self.view removeConstraint:self.leftConLight];
NSLayoutConstraint *lcd = [NSLayoutConstraint constraintWithItem:self.darkButton
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeRight
multiplier:.5
constant:0];
NSLayoutConstraint *lcl = [NSLayoutConstraint constraintWithItem:self.lightButton
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeRight
multiplier:.9
constant:0];
[self.view addConstraints:@[lcd,lcl]];
}
Dans cet exemple, je positionne deux boutons UIB (type info sombre et clair). Je les ai ajoutés dans IB et j'ai fait des IBOutlets à leurs contraintes qu'ils ont du côté gauche de la vue (c'est ce que le système m'a donné, cela aurait pu être du côté droit - cela n'a pas d'importance puisque vous les supprimez de toute façon Si vous créez les points dans le code, vous n’avez pas besoin de le faire). Dans le code, je supprime ces contraintes, puis j'en ajoute de nouvelles qui placeront le centre des boutons à 50% et 90% de la largeur de l'écran.
Je ne suis pas un expert en mise en page automatique (ou même encore compétent!) Mais à partir de XCode 6, vous semblez pouvoir le faire dans IB.
Afficher l'inspecteur de taille (cliquez sur la règle)
Double-cliquez sur le rectangle de contrainte (pas évident! "Modifier" vous emmène ailleurs)