"Fit image" dans une NSButtonCell
Chacha
Membre
Hello,
Comme souvent, j'ai un problème et j'ai trouvé une solution, mais la solution me paraà®t un peu compliquée pour être honnête.
Voilà : j'ai une NSTableView avec des lignes relativement larges, car je voudrais y afficher des thumbnails d'images. Facile, je mets une NSImageCell dans la tableView.
Sauf que j'aimerais bien afficher, dans une cellule, un petit titre (la date à laquelle l'image a été prise); mais une NSImageCell ne peut contenir de texte. Donc je mets finalement une NSButtonCell.
Mais dans une NSButtonCell, l'image (un peu plus grande que la cellule) déborde et n'est pas redimensionnée.
Du coup, je me vois déjà dériver NSButtonCell et surcharger drawInteriorWithFrame, mais l'idée ne me plaà®t pas beaucoup.
Comment feriez-vous ?
PS : rien à voir avec Quicky, c'est pour tout autre chose
Comme souvent, j'ai un problème et j'ai trouvé une solution, mais la solution me paraà®t un peu compliquée pour être honnête.
Voilà : j'ai une NSTableView avec des lignes relativement larges, car je voudrais y afficher des thumbnails d'images. Facile, je mets une NSImageCell dans la tableView.
Sauf que j'aimerais bien afficher, dans une cellule, un petit titre (la date à laquelle l'image a été prise); mais une NSImageCell ne peut contenir de texte. Donc je mets finalement une NSButtonCell.
Mais dans une NSButtonCell, l'image (un peu plus grande que la cellule) déborde et n'est pas redimensionnée.
Du coup, je me vois déjà dériver NSButtonCell et surcharger drawInteriorWithFrame, mais l'idée ne me plaà®t pas beaucoup.
Comment feriez-vous ?
PS : rien à voir avec Quicky, c'est pour tout autre chose
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
nscell plutôt que nsbuttoncell, à moins d'avoir besoin de la fonctionnalité "button"... je l'ai fait dans quelques projets, c'est assez facile et à mon avis la solution la plus conforme à l'esprit des cell...
Merci, cbrandt; mais le problème se déplace; dans ce cas, mon image s'affiche à l'envers ! Le problème, c'est qu'une NSCell n'étant pas une NSView, je ne peux pas redéfinir isFlipped.
Je peux essayer setFlipped sur mon image, mais ça n'a pas d'effet dans mon drawRect:inRect:operation:fraction.
ça n'a pas non plus d'effet si j'affiche une représentation de l'image par drawInRect:
Et si je rajoute un NSAffineTransform pour faire scaleXBy:1 yBy:-1, ça ne marche pas non plus.
Pfou! C'est pas gagné.
par ex pour une image avec titre, je définis tCell et iCell, et les appels à setTitle et setImage sont dispatchés à mes deux cell:
puis dans le .m:
comme ça pas de pb de flipped ou autre, et on profite des autres possibilités des cell...
ps: tapé comme ça de tête, à arranger pour que ça marche...
Pas de souci, j'ai bien compris l'idée; merci !
Par contre, je trouve qu'on n'est pas vraiment dans "l'esprit des cells", comme tu dis. T'as pas l'impression de les torturer un peu ?
Alors je me suis inspiré de ton code, mais j'ai quand même fait un truc assez différent. Voici ce que j'ai fait:
-ma class MyCell dérive de NSImageCell, et n'a aucune donnée d'instance
-dans mon TableViewDataSource, la méthode objectValueForTableColumn renvoie l'image concernée (c'est obligatoire pour une NSImageCell)
-du coup, je surcharge le delegate willDisplayCell pour y caser un setRepresentedObject sur la cell
-enfin, dans MyCell.m, je surcharge en gros comme ça
Je pense qu'on n'avait pas exactement le même problème, mais dans mon cas cette méthode était plus simple.
+
Chacha