2017-10-13 8 views
0

J'ai un ImageView à l'intérieur d'une cellule de table à dimensionnement automatique qui a un mode de contenu Aspect Fit. Lorsque la table charge complètement l'image elle-même, elle est redimensionnée pour s'adapter à la largeur de la cellule tout en conservant le rapport d'origine. Toutefois, la hauteur de la cellule du tableau est aussi grande que si le mode de contenu Ajuster n'a jamais été appliqué à la vue de l'image.ImageView dans la cellule du tableau de dimensionnement automatique utilise la hauteur de l'image avant que l'ajustement d'aspect ne soit appliqué

enter image description here

Le rouge dans cette image est le point de vue de l'image et l'espace au-dessus et au-dessous de l'image réelle est ce que je suis en train d'éviter.

Quand je remplace Aspect Fit avec Aspect de remplissage, c'est ce que la même cellule ressemble à:

enter image description here

C'est ce que je veux dire quand je dis qu'il ressemble à la vue de l'image utilise la hauteur l'image avant l'ajustement d'aspect est appliquée. Ai-je manqué une contrainte ou un paramètre dans ImageView? Toute aide est appréciée!

+0

avez-vous défini une contrainte pour la hauteur de votre vue d'image dans votre cellule? –

+0

D'où viennent ces images? Sont-ils téléchargés à partir d'un serveur distant ou sont-ils dans votre fichier assets.xcassets? –

+0

Les images sont téléchargées depuis une URL. – user3029918

Répondre

0

Si les images sont téléchargées à partir d'un serveur, leur téléchargement prendra une seconde ou une milliseconde. Le temps qu'ils prennent pour télécharger est perceptible à l'utilisateur. La meilleure expérience utilisateur définit explicitement la hauteur et la largeur avant le téléchargement de l'image. Si vous utilisez une API tierce pour extraire l'image (c'est-à-dire l'API facebook ou youtube), le retour inclura l'URL de l'image ainsi que la hauteur et la largeur de l'image. De cette façon, vous pouvez définir la hauteur et la largeur de la cellule, puis attendre le téléchargement de l'image sans interruption ni modification de la taille des cellules. Ce serait la meilleure façon de le faire. En définissant explicitement la hauteur et la largeur, vous n'avez pas besoin de vous soucier autant du mode de contenu à utiliser pour la vue de l'image. Je ne recommanderais d'utiliser un UITableViewCell auto-dimensionnement si vous définissez explicitement la hauteur et la largeur de l'affichage de l'image dans cette cellule. J'espère que ça aide!

Je viens de voir votre commentaire le plus récent. Vous pouvez ajuster la taille de chaque vue d'image dans chaque cellule en fonction de l'image renvoyée. Vous n'avez pas besoin de définir une hauteur fixe pour l'affichage de l'image. Vous pouvez changer la hauteur de chaque cellule en fonction de l'image qui se trouve dans cette cellule. Je recommande juste de le faire avant que l'image soit téléchargée. Si vous utilisez le storyboard, une façon de procéder consiste à créer une sortie pour la contrainte de hauteur de la vue d'image.