2017-04-26 4 views
0

CE QUI FONCTIONNE:Maximisation la région pour un UIImageView en orientation portrait, en le maintenant au-dessus du centre de superview Y Point

J'ai un UIViewController qui a un UIImage à gauche lorsque l'orientation paysage. Je veux que l'image soit la plus grande possible, mais elle ne devrait pas dépasser la moitié gauche de la scène. Il semble que vous pouvez le faire en ajoutant une contrainte qui exige que la valeur "Center X Between Margins" de la super-vue soit toujours supérieure ou égale au front arrière de l'image.

CE QUI NE FONCTIONNE PAS:

De même, le même UIImage devrait être au sommet de la scène en orientation portrait. L'image doit être grande mais ne pas dépasser la moitié supérieure de la scène. Je m'attendais à ajouter une contrainte exigeant que la valeur "Center Y Between Margins" de la super-vue soit supérieure ou égale au bord inférieur de l'image, mais il n'est pas évident de voir comment cela se produira. Un cntl-glisser de l'image vers le sommaire crée une contrainte entre le bas de l'image et le "Bottom Layout Guide.Top". J'ai vérifié l'inspecteur de taille pour une option pour remplacer ceci avec Superview.CenterYWithinMargins, mais n'ai eu aucune chance. Au lieu de cela, si vous allez à l'inspecteur de taille et cliquez sur le "Bottom Layout Guide.Top" alors il ya l'option "Center Y" mais il est grisé. Je soupçonne que le Bottom Layout Guide n'est pas l'objet à utiliser, mais n'a pas trouvé de mécanisme pour spécifier d'autres objets.

QUESTIONS:

Quelle est la meilleure façon de contraindre un UIImageView (ou tout point de vue, d'ailleurs) il est donc bord inférieur ne se prolonge pas au-dessous du centre de superviews Y?

Une idée de pourquoi les options de contrainte de paysage sont si différentes des options de contrainte de portrait?

merci!

Répondre

1

Commençons par la première proposition:

Je veux que l'image soit grande que possible, mais il ne doit pas dépasser la moitié gauche de la scène

Vous avez pas expliqué exactement où la vue d'image doit aller, mais supposons, aux fins de discussion, qu'elle soit en haut à gauche. Ensuite, il aura ces quatre contraintes:

  • haut épinglé Superview haut

  • gauche épinglés à gauche Superview

  • largeur égale à la largeur Superview mais avec un multiplicateur de 1/2

  • rapport d'aspect (le rapport entre la largeur et la hauteur) défini sur le rapport d'aspect de l'image elle-même

Maintenant, nous allons prendre la deuxième proposition:

au sommet de la scène en orientation portrait.L'image doit être grande mais ne pas dépasser la moitié supérieure de la scène

Encore une fois, je suppose que nous sommes en haut à gauche. Ensuite, les contraintes sont:

  • haut épinglé Superview haut

  • gauche épinglé à Superview gauche

  • hauteur égale à la hauteur Superview mais avec un multiplicateur de 1/2

  • rapport d'aspect (le rapport entre la largeur et la hauteur) défini sur le rapport d'aspect de l'image elle-même

Comme vous pouvez le voir, une seule contrainte doit être permutée lors de la rotation entre paysage et portrait. Et cela peut être configuré sans code (pour un iPhone, pour un iPad, vous aurez besoin de code pour faire le swap).

Voici les captures d'écran du résultat. En portrait, nous ne doivent pas dépasser la moitié supérieure:

enter image description here

Dans le paysage, nous ne dépassent pas la moitié gauche:

enter image description here

+0

Si ce n'est pas ce que vous vouloir, le problème est que vous ne l'avez pas décrit assez bien. Décrivez-le mieux et je serai heureux de le modifier. – matt

+0

Merci, Matt! L'utilisation du multiplicateur ne m'est jamais venue à l'esprit. Mes excuses pour ne pas fournir les données que vous avez demandées. Il y a un équilibre délicat entre «fournir suffisamment» et «infliger trop»! –