2009-05-18 22 views
6

Comment faire pour UIImage dans la cellule de UITableView, UITableViewCell (?).Comment redimensionner l'image pour l'adapter à la cellule UITableView?

-vous addSubview-cell ou est-il un moyen de redimensionner cell.image ou UIImage avant qu'il ne soit affecté à cell.image? Je veux garder la taille de la cellule par défaut (quoi que ce soit lorsque vous init avec zéro rectangle) et que vous souhaitez ajouter des icônes comme des images à chaque entrée. Les images sont légèrement plus grandes que la taille de la cellule (taille de la ligne du tableau).

Je pense que le code ressemble à ceci (du haut de ma tête):

UIImage * image = [[UIImage alloc] imageWithName:@"bart.jpg"]; 
cell = ... dequeue cell in UITableView data source (UITableViewController ...) 
cell.text = @"bart"; 
cell.image = image; 

Que dois-je faire pour redimensionner l'image à la taille de la cellule? Je l'ai vu quelque chose comme:

UIImageView * iview = [[UIImageView alloc] initWithImage:image]; 
iview.frame = CGRectMake(...); // or something similar 
[cell.contentView addSubview:iview] 

Le ajoutera image ci-dessus à la cellule et je peux calculer la taille de l'adapter, cependant:

  1. Je ne sais pas s'il y a une meilleure façon, n'est-ce pas trop frais à ajouter UIImageView juste pour redimensionner le cell.image?
  2. Maintenant, mon étiquette (cell.text) doit être déplacé comme il est obscurci par l'image, j'ai vu une solution où vous venez ajouter le texte comme une étiquette:

Exemple:

UILabel * text = [[UILable alloc] init]; 
text.text = @"bart"; 
[cell.contentView addSubview:iview]; 
[cell.contentView addSubview:label]; 
// not sure if this will position the text next to the label 
// edited original example had [cell addSubview:label], maybe that's the problem 

Est-ce que quelqu'un pourrait me diriger dans la bonne direction?

EDIT: Doh [cell.contentview addSubview:view] pas [cell addSubview:view] Je suis peut-être censé regarder ceci:

- (UITableViewCell *)tableView:(UITableView *)tableView 
cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = ...; 
    CGRect frame = cell.contentView.bounds; 
    UILabel *myLabel = [[UILabel alloc] initWithFrame:frame]; 
    myLabel.text = ...; 
    [cell.contentView addSubview:myLabel]; 
    [myLabel release]; 
} 
+0

Aucune autre suggestion? – stefanB

Répondre

2

This site posts code sur un redimensionnant UIImage*. Vous pouvez jouer avec la mise à l'échelle pour obtenir le bon ratio pour le UIImage* que vous utilisez, pour le réduire.

+0

Intéressant, je vais jeter un oeil, merci pour le lien – stefanB

1

Si vous avez accès au centre Apple Devloper, vous trouverez une vidéo sur la mise à l'échelle des images pour les vues de table. Il est plus axé sur les problèmes de performances et parle beaucoup de threads, mais il montre un exemple de code utilisé pour redimensionner les images.

Nom de la vidéo: "Développement efficace de l'application iPhone - Partie 2" environ 30 minutes.

+0

merci, je vais vérifier – stefanB