2010-11-24 8 views
0

Je télécharge un certain nombre d'images à partir d'Internet, à partir de plusieurs emplacements différents, toutes avec des dimensions inconnues et différentes.Différentes tailles UIImage personnalisées UITableViewCell

J'ai réussi à les charger tous paresseusement et apparaissant quand téléchargé dans le UITableViewCell personnalisé que j'ai créé, qui a un UIImageView (cellImageView largeur 320, hauteur 100) à l'intérieur.

Je suis en train de la cellule et le redimensionnement de la hauteur de la ligne de la table comme ceci:

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath 
{ 
    ImageDownloader *download = [imagesModel.downloads objectAtIndex:[indexPath row]]; 

    if (download.image) 
    { 
     CGFloat scaleFactor = 320.0f/download.image.size.width; 
     CGFloat heightScaled = (scaleFactor * download.image.size.height); 

     return heightScaled; 
    } 
     return 100.0f; 
} 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    ImageTableCell *cell = (ImageTableCell *)[tableView dequeueReusableCellWithIdentifier:[ImageTableCell reuseIdentifier]]; 

    if (cell == nil) 
    { 
     [[NSBundle mainBundle] loadNibNamed:@"ImageTableCell" owner:self options:nil]; 
     cell = loadCell; 
     self.loadCell = nil; 
    } 
    ImageDownloader *download = [imagesModel.downloads objectAtIndex:[indexPath row]]; 

    if (download.image == nil) 
    { 
     download.delegate = self; 
    } 

    cell.cellImageView.image = download.image; 

    return cell; 
} 

Le problème est que je ne peux pas obtenir les cellules pour afficher correctement. J'ai joué avec le contentMode de l'UIImageView et j'ai trouvé que l'AspectFill fonctionne bien, mais il pousse tout vers le haut en provoquant l'écrêtage et le masquage et étire quelques images quand elles ne le devraient pas. L'utilisation Top résout le problème vertical mais le TableViewCell ne puis correspond pas à l'image (l'image est trop grande parfois.

Est-ce que la solution est de redimensionner la ligne du tableau, la coutume TableViewCell, le UIImage et UIImage ? et peut-être créer ma propre fonctionnalité de mise à l'échelle?

Répondre

0

Transforme la coutume TableViewCell, il est vue et le UIImageView étaient tous des hauteurs légèrement différentes, ce qui donne les résultats foirés .

0

Avez-vous créé le UITableViewCell dans IB, ou dans Xcode? si Xcode je serais intéressé à voir la méthode layoutSubviews.

+0

Dans IB, son utilise la classe UITableViewCell personnalisée, avec un UIView puis un UIImageView dans la vue. – daidai

+1

vous pouvez jeter un oeil aux ressorts et entretoises dans la partie layout d'IB, vérifiez que vous les avez configurés car cela peut provoquer des changements inattendus si vous modifiez la hauteur de la ligne tableView plus tard. – MCannon

Questions connexes