J'ai un tas d'images que j'utilise pour les vues d'image de la cellule, elles ne sont toutes pas plus grandes que 50x50. par exemple 40x50, 50x32, 20x37 .....
Lorsque je charge la vue tableau, le texte ne s'aligne pas car la largeur des images varie. J'aimerais également que de petites images apparaissent au centre plutôt qu'à gauche.
Voici le code que j'essaye dans ma méthode 'cellForRowAtIndexPath'
cell.imageView.autoresizingMask = ( UIViewAutoresizingNone );
cell.imageView.autoresizesSubviews = NO;
cell.imageView.contentMode = UIViewContentModeCenter;
cell.imageView.bounds = CGRectMake(0, 0, 50, 50);
cell.imageView.frame = CGRectMake(0, 0, 50, 50);
cell.imageView.image = [UIImage imageWithData: imageData];
Comme vous pouvez le voir, j'ai essayé plusieurs choses, mais aucune ne fonctionne.
self.imageView.bounds
l'image sera centrée.UITableViewCell
?Pour ceux d'entre vous qui n'ont pas de sous-classe de
UITableViewCell
:Le code ci-dessus définit la taille sur 40x40.
Swift 2
Ou vous pouvez utiliser une autre approche (non testée) suggérée par @Tommy:
Swift 3+
Le code ci-dessus est la version Swift 3+ de ce qui précède.
la source
UIScreen.mainScreen.scale
alors je suis juste allé avecUIGraphicsBeginImageContext
. Redimensionnement également de l'imageView dans la cellule de base.Voici comment je l'ai fait. Cette technique prend soin de déplacer le texte et les étiquettes de texte de détail de manière appropriée vers la gauche:
la source
vue d'image ajouter comme vue secondaire à la cellule de vue de tableau
la source
La cellule entière n'a pas besoin d'être refaite. Vous pouvez utiliser les propriétés indentationLevel et indentationWidth de tableViewCells pour déplacer le contenu de votre cellule. Ensuite, vous ajoutez votre imageView personnalisée sur le côté gauche de la cellule.
la source
Mieux vaut créer une vue d'image et l'ajouter en tant que vue secondaire à la cellule.Ensuite, vous pouvez obtenir la taille d'image souhaitée.
la source
Un Simply Swift ,
Étape 1: créer une sous-classe de l'
UITableViewCell
étape 2: ajouter cette méthode à la sous-classe de UITableViewCell
Étape 3: Créez un objet de cellule à l'aide de cette sous-classe dans
cellForRowAtIndexPath
,Étape 4: Profitez
la source
la source
Cela a fonctionné pour moi rapidement:
Créez une sous-classe de UITableViewCell (assurez-vous de lier votre cellule dans le storyboard)
Dans cellForRowAtIndexPath, retirez la cellule de la file d'attente en tant que nouveau type de cellule:
Modifiez évidemment les valeurs numériques en fonction de votre mise en page
la source
J'ai créé une extension en utilisant la réponse de @GermanAttanasio. Il fournit une méthode pour redimensionner une image à la taille souhaitée et une autre méthode pour faire de même tout en ajoutant une marge transparente à l'image (cela peut être utile pour les vues de tableau où vous souhaitez que l'image ait également une marge).
la source
Voici la méthode de travail de @germanattanasio, écrite pour Swift 3
la source
Si vous utilisez,
cell.imageView?.translatesAutoresizingMaskIntoConstraints = false
vous pouvez définir des contraintes sur l'imageView. Voici un exemple de travail que j'ai utilisé dans un projet. J'ai évité les sous-classes et je n'ai pas eu besoin de créer un storyboard avec des cellules prototypes, mais j'ai mis un certain temps à démarrer, il est donc préférable de ne l'utiliser que s'il n'y a pas de moyen plus simple ou plus concis à votre disposition.la source
Le UITableViewCell standard fonctionne bien pour positionner les choses mais le cell.imageView ne semble pas se comporter comme vous le souhaitez. J'ai trouvé qu'il était assez simple de faire en sorte que UITableViewCell se présente correctement en donnant d'abord la cellule.
Ensuite, vous pouvez simplement connecter votre propre UIImageView fonctionnant correctement avec
Définissez l'image sur anImageView et il fera ce que vous attendez d'un UIImageView. Soyez la taille que vous voulez quelle que soit l'image que vous lui donnez. Cela devrait aller dans tableView: cellForRowAtIndexPath:
la source
Cette solution dessine essentiellement l'image comme «ajustement d'aspect» dans le rect donné.
la source
J'ai eu le même problème. Merci à tous ceux qui ont répondu - j'ai pu trouver une solution en utilisant des parties de plusieurs de ces réponses.
Ma solution utilise Swift 5
Le problème que nous essayons de résoudre est que nous pouvons avoir des images avec des proportions différentes dans nos
TableViewCell
s mais nous voulons qu'elles soient rendues avec des largeurs cohérentes. Les images doivent, bien sûr, être rendues sans distorsion et remplir tout l'espace. Dans mon cas, je me débrouillais bien avec certains "recadrages" d'images hautes et maigres, j'ai donc utilisé le mode contenu.scaleAspectFill
Pour ce faire, j'ai créé une sous-classe personnalisée de
UITableViewCell
. Dans mon cas, je l'ai nomméStoryTableViewCell
. La classe entière est collée ci-dessous, avec des commentaires en ligne.Cette approche a fonctionné pour moi lorsque j'utilise également une vue accessoire personnalisée et de longues étiquettes de texte. Voici une image du résultat final:
Vue de tableau rendue avec une largeur d'image constante
la source
La solution avec laquelle nous avons abouti est similaire à de nombreuses autres. Mais pour obtenir la position correcte du séparateur, nous avons dû le définir avant d'appeler
super.layoutSubviews()
. Exemple simplifié:la source