Comment redimensionner UIImageView en fonction de la taille / ratio de UIImage dans Swift 3?
S'il vous plaît ne pas marquer les doublons, je n'ai pas trouvé de solution compte tenu de threads disponibles.
J'ai un UIImageView
et l'utilisateur est en mesure de télécharger UIImages
dans différents formats. Le problème est que j'ai besoin de la UIImageView
pour redimensionner basé sur l'Image donnée du rapport.
Actuellement, je suis en utilisant Aspect fit
mais le UIImageView
reste vide sur de grandes parties de lui-même. Je voudrais avoir la UIImageView
redimensionne en fonction de son contenu. E. g si le pic est 1:1, 4:3, 6:2, 16:9...
De l'aide est très apprécié.
Comme demandé, qu'est ce que je veux:
J'ai eu un UIImageView
qui était carré, chargé avec une Image en 16:7 ou quoi que ce soit et la UIImageView
redimensionné pour s'adapter à la taille de l'Image...
source d'informationauteur David Seek
Vous devez vous connecter pour publier un commentaire.
Il semble que vous souhaitez redimensionner une ImageView selon le rapport de l'image et le conteneur de vue de la taille, voici l'exemple en Swift (Désolé,l'ex-réponse à un bug, j'ai corrigé):
J'ai passé de nombreuses heures à essayer de trouver une solution au même problème que vous rencontrez, et c'est la seule solution qui a fonctionné pour moi (Swift 4, xCode 9.2):
Ajouter la classe pour le projet et de définir les UIImageView à la classe personnalisée ScaledHeightImageView. L'affichage de l'image du mode de contenu est l'Aspect Ajustement.
Mon problème est le même que celui indiqué dans ce post. À l'intérieur de mon prototype TableViewCell de ContentView, j'ai une verticale Empilervoir contraint de chaque bord. À l'intérieur de la Empilervoir il y avait une Étiquette, ImageView et un autre Label. Avoir l'ImageView ensemble de AspectFit n'était pas assez. L'image est à la bonne taille et les proportions, mais l'ImageView ne pas envelopper l'image réelle en laissant une bande d'espace supplémentaire entre l'image et de l'étiquette (comme dans l'image ci-dessus). L'ImageView hauteur semblait correspondre à la hauteur de l'image d'origine plutôt que de la hauteur de l'image (après aspectFit fait c'est du boulot). Les autres solutions que j'ai trouvé n'a pas de résoudre complètement le problème, pour diverses raisons. J'espère que cela aide quelqu'un.
Définir votre imageView à aspectFit, qui va redimensionner l'image pour ne pas dépasser votre imageView cadre.
Vous pouvez obtenir la taille de votre UIImage de votre imageView avec la logique de cette question - fondamentalement, il suffit d'obtenir la hauteur et la largeur de la UIImage.
Le calcul du ratio, et de définir la largeur/hauteur de l'imageView pour s'adapter à votre écran.
Il y a aussi un question similaire à votre que vous pourriez obtenir de vous répondre.
J'ai passé de nombreuses heures sur ce sujet, et j'ai finalement obtenu une solution qui a fonctionné pour moi (Swift 3):
constraintHeight
)Puis, quand j'ai besoin d'afficher l'image, j'ai simplement écrit ce qui suit (échantillonnés à partir des réponses ci-dessus):
Fondamentalement, ce qui assure que l'image remplisse l'UIImageView de la largeur et les forces de l'UIImageView de hauteur égale à la hauteur de l'image après avoir mis à l'échelle