La compréhension multiplicateur de mise en page automatique pour utiliser le positionnement relatif

Je suis en train d'essayer de comprendre comment on peut utiliser la Mise en page Automatique de la position des éléments par rapport à d'autres points de vue en pourcentage.

Par exemple, j'ai appris récemment que vous pouvez spécifier une vue du bas doit se situer à 4% supérieur à celui de son superview du bas en utilisant ce:

self.view.addConstraint(NSLayoutConstraint(item: label, attribute: .Bottom, relatedBy: .Equal, toItem: self.view, attribute: .Bottom, multiplier: 0.96, constant: 0))

Cela fait sens pour moi, parce que d'un multiplicateur de 1 permettrait d'aligner le droit à la vue du bas, de sorte que vous pouvez diminuer le montant de 4 pour cent en changeant le multiplicateur à 0,96.

Mais comment pouvez-vous faire la même chose dans l'autre sens? Vous souhaitez spécifier un top de l'étiquette devrait commencer 4% vers le bas à partir de la superview est top. Si vous utilisez la même ligne, mais de modifier les attributs de .Top, ce qui signifie qu'il serait de 4% plus élevé que le superview est top (mais il ne fait pas le déplacer hors de l'écran). Vous ne pouvez pas avoir un multiplicateur négatif je ne pense pas, et je ne crois pas une valeur supérieure à 1, ne rien lors de la constante est de 0. Alors, comment obtenez-vous mis en place?

J'ai la même question pour la mise en œuvre attaque et de fuite. Tirant de l'arrière est facile. Si vous voulez de 10% à partir de la droite:

self.view.addConstraint(NSLayoutConstraint(item: label, attribute: .Trailing, relatedBy: .Equal, toItem: self.view, attribute: .Trailing, multiplier: 0.9, constant: 0))

Cela fait du sens parce que vous le composez en arrière 0,1 ou 10%, au lieu de s'aligner pleinement à 1.0. Mais comment voulez-vous faire de même pour le leader? J'ai pensé que vous pourriez être en mesure de mettre l'étiquette de leader par rapport à la vue de fuite, puis régler le multiplicateur à 0.1. Dans mon esprit que signifie le label commencer à tout droit, mais alors être composé de 90%, donc obtenir le de 10% à partir de la gauche. Mais ce n'est pas le cas, je ne sais pas pourquoi.

Pouvez-vous expliquer comment cela fonctionne, comment les utiliser correctement multiplicateur pour obtenir ces relative mises en page?

Pour faire simple, disons que vous souhaitez créer un label qui a en haut et en bas de 10% de la superview de la hauteur, et de la fuite et de 10% de la superview de largeur. Sur un iPhone en mode portrait, il va y avoir plus de rembourrage au-dessus et au-dessous de l'étiquette qu'il y a remplissage à gauche et à droite, comme ceci (oui, c'est à l'échelle):

La compréhension multiplicateur de mise en page automatique pour utiliser le positionnement relatif

Mais disons que sur l'iPad il va être montré dans une vue qui est un carré parfait. Par conséquent, le rembourrage et la même tout autour, comme suit:

La compréhension multiplicateur de mise en page automatique pour utiliser le positionnement relatif

La question est de savoir comment définissez-vous ces contraintes dynamiques en valeur, au lieu de fixer une valeur fixe pour une constante. Je sais déjà comment le faire en bas de début et de fin, mais le haut et le leader m'a déconcerté. Je suis l'espoir de comprendre comment utiliser les multiplicateurs de faire des mises en page plus sophistiquées, par exemple, la spécification d'un top de l'étiquette doit se situer à 10% sous une autre étiquette du bas, au lieu de fixer à une constante fixe.

  • Pouvez-vous montrer un schéma de ce que vous essayez d'atteindre?
  • Pour ce très vieux AQ .. l'approche de base consiste à utiliser des "spacers" ou "mesure" points de vue. Il suffit de marquer comme caché. Ils font tous les calculs pour vous.
InformationsquelleAutor Jordan H | 2014-11-17