10
votes

Modification des limites de l'image d'image d'Uitabiliewcell

J'essaie de placer diverses images de taille à l'intérieur de l'IMAGEView d'Uitabiliewcell. Je reçois les données d'image asynchlez, créez l'image, définissez le mode de contenu de ImageView et défini enfin les limites de l'image d'image. Mais le code semble insensible à tout changement que j'ai fait. Je veux que les images soient centrées dans une zone de 75x75. J'ai écrit le code ci-dessous à cet effet

NSLog(@"imageview:%@ bounds and contentMode:%@ %@",[holder imageView],[holder.imageView bounds],[holder.imageView contentMode]);


0 commentaires

5 Réponses :


1
votes

Essayez de modifier la propriété "contentmode" de l'image d'image sur "UIViewContentModeScAltfit" ou "UIViewContentMoDescallefill"


1 commentaires

Merci, j'ai essayé votre recommandation mais cela n'a pas fonctionné. J'ai réalisé que quelle que soit la valeur que j'ai définie sur contentmode et les limites n'a aucun effet. J'ai édité mon premier post pour refléter cela.



44
votes

Terminé, j'ai finalement trouvé la solution, cela m'a coûté 3 heures =)

La solution consiste à modifier les propriétés telles que liées, cadre, contentage de la mode - (vide) Méthodey de la classe Uitabiliewcell personnalisée. Le "astuce" consiste à écrire un code de mise en page dans cette méthode, sinon le code n'a aucun effet.

Le code ci-dessous a fait le travail pour moi. Il fait des rangées de la table alignée verticalement. xxx


4 commentaires

Bummer, je pensais que je pourrais être obligé de créer une autre sous-classe UitablesViewCell ... Merci d'avoir mis au moment de la confirmer pour moi!


Je dois accepter qu'il s'agit d'une perte de temps massive pour que cela fonctionne comme prévu.


Bien que cela fonctionne, c'est toujours un hack. On s'attendrait à ce que la trame / limites soit élaborée à partir des contraintes définies dans l'utableviewcell personnalisé.


Parfait. Travaillé en premier Go. Merci mon pote.



2
votes

"UIViewContentModecenter || uiviewContentModeredraw" est équivalent à 1. Ce n'est pas non plus un Bitfield. Vous voulez UIViewContentModecenter.

UitailViewCell.ImageView est géré par la cellule. Si vous souhaitez une mise en page personnalisée, essayez d'ajouter une vue sur contentView (je suppose que ce que vous entendez par «centré dans une zone de 75x75»): xxx


1 commentaires

Merci! J'ai résolu le problème sans utiliser la vue de contenu. Je vais marquer la question comme répondu après 2 jours =)



11
votes

donc le problème avec uableviewcell est que vous n'avez aucun contrôle sur la taille des objets intégrés (à savoir imageview, contenusview, accessoryview, vue d'arrière-plan ). Lorsque le tableau change, vos personnalisations sont piétinées.

Vous pouvez, car Behlul a souligné, forcer les tailles à être corrigées en utilisant LayouTouSubviews , mais le problème de celui-ci est que layouLetSubviews est appelé tous les Temps le tableau défile. C'est beaucoup d'appels de repencement inutiles.

Un autre, méthode consiste à ajouter tous de votre contenu à la contentView . De même si vous personnalisez l'arrière-plan, vous pouvez créer une vue transparente arrière-plan et ajouter votre vue sur l'arrière-plan personnalisé (par exemple MyBackgrounview ) en tant que sous-vision de Fond d'arrière-plan .

De cette façon, vous pouvez placer et former vos articles comment vous les voulez.

Le côté du bas est que les messages de stock ne sont plus reçus de l'accessoire ou des vues d'image. Il vous suffit de vous créer posséder.

espère que cela aide! xxx


1 commentaires

C'est en fait la meilleure méthode que la réponse sélectionnée. Vous pouvez également créer un uableviewCell via XIB, si vous le souhaitez. Voici un tutoriel sur celui-ci: ijoshsmith.com / 2011/07/16 / ...



0
votes

Créer une sous-classe d'UitailViewCell: xxx


0 commentaires