2017-05-04 4 views
1

Sur mon application iOS écrite en Swift 3, j'ai 4 UIImages, chacune 2 dans un UIStackView, et les 2 UIStackViews dans un autre UIStackView, comme le montre l'image ci-dessous :Redimensionner les images d'UIImage dans UIStackView pour les adapter à l'application iOS

enter image description here

Sur l'image vous pouvez voir la division I fait aux images.

Vous pouvez également voir le problème, lorsque les images quittent l'écran et que l'utilisateur ne peut pas voir l'image complète parce qu'elle est rognée.

Toutes les images sont au format «2x» sur leur ensemble d'images en Assets.xcassets.

Sur Main.storyboard dans l'inspecteur d'attributs, j'ai changé le mode de contenu pour «Échelle à remplir» pour les 4 images. J'ai aussi fait que dans le code:

phoneCallImage.contentMode = UIViewContentMode.scaleAspectFit 
sendEmailImage.contentMode = UIViewContentMode.scaleAspectFit 
sendSmsImage.contentMode = UIViewContentMode.scaleAspectFit 
openFacebookImage.contentMode = UIViewContentMode.scaleAspectFit 

J'ai aussi essayé de le faire avec le plein UIStackView (images Stack Voir sur la photo):

imagesStackView.contentMode = UIViewContentMode.scaleAspectFit 

Que puis-je faire pour résoudre ce problème et montrer la image complète sans le couper?

+0

Je pense que vous n'avez pas ajouté toutes les contraintes .. la stackview extérieure doit tenir dans la vue. cliquez sur les erreurs dans les contraintes et vous pourriez avoir une idée de ce qui se passe .. – Thahir

+0

Je pense que la définition d'une contrainte de début et de fin pour la stackview externe peut résoudre votre problème – Thahir

Répondre

1

Vous devrez définir des contraintes pour les images individuelles et les vues de la pile contenant. Pour chaque image, vous devrez spécifier une contrainte de largeur égale à la plus grande vue de la pile avec un multiplicateur de 0,5 (50% de la largeur du parent) afin qu'elle s'adapte à la taille de l'écran. Ensuite, pour chaque image, vous pouvez utiliser une contrainte pour le rapport d'aspect afin de le maintenir à 1: 1 afin que la hauteur soit également mise à l'échelle. Ensuite, pour la vue de la pile supérieure, vous devez également limiter sa largeur à la vue parent, puis ajouter des contraintes pour la marge gauche et la position y.

Voir les images pour les contraintes et le résultat final.

You dont need the width constraints The end result

0

J'ai réussi à résoudre ce problème.
D'abord, je choisis les pleins UIStackView (images Voir Stack dans l'image) et a ajouté des contraintes à lui, pour définir les marges à 0:

enter image description here

Après que j'ai choisi tout le monde des images dans le UIStackView et changé sa largeur et sa hauteur à 171,5 à partir du menu de contraintes, pour que ce soit un carré:

enter image description here

Après cela, tout était parfaitement aligné sur l'écran.