2010-11-24 20 views
0

Ich lade eine Reihe von Bildern aus dem Internet, von verschiedenen Standorten, alle mit unbekannten und unterschiedlichen Dimensionen.Verschiedene UII Größen in benutzerdefinierten UITableViewCell

Ich habe sie alle erfolgreich faulen Laden schön und erscheint beim Download in der benutzerdefinierten UITableViewCell ich erstellt, die eine UIImageView (cellImageView Breite 320, Höhe 100) drin hat.

Ich bin die Tabelle der Zelle einstellen und die Zeilenhöhe Ändern der Größe in etwa so:

- (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; 
} 

Problem ist ich nicht die Zellen korrekt angezeigt bekommen. Ich habe mit dem contentMode von UIImageView herumgespielt und festgestellt, dass AspectFill OK funktioniert, aber alles nach oben schiebt, was Clipping und Maskierung verursacht und einige Bilder streckt, wenn sie nicht sollten. Mit Top löst das vertikale Problem, aber das TableViewCell dann paßt nicht in das Bild (das Bild manchmal zu groß ist.

Ist die Lösung der Tabelle der Zeile, das benutzerdefinierte TableViewCell, die UIImage und UIImage, um die Größe ? und vielleicht meine eigene Skalierung Funktionalität erstellen?

Antwort

0

die benutzerdefinierte TableViewCell es stellte sich heraus, es ist Ansicht und die UIImageView waren alle leicht unterschiedlich hoch, was zu den verwirrten Ergebnissen führte .

0

haben Sie die UITableViewCell in IB, oder in Xcode? wenn in Xcode erstellen würde ich zu sehen, die layoutSubviews Methode interessiert.

+0

In IB verwendet es die benutzerdefinierte UITableViewCell-Klasse mit einer UIView und dann einer UIImageView in der Ansicht. – daidai

+1

Wenn Sie sich die Federn und Streben im Layoutteil von IB ansehen möchten, überprüfen Sie, ob sie eingerichtet sind, da dies zu unerwarteten Änderungen führen kann, wenn Sie die Höhe der TabelleView-Zeile später ändern. – MCannon

Verwandte Themen