2016-12-12 3 views
0

Ich erstelle eine Detailansicht in einer App. Der Inhalt, der im Detail angezeigt wird, kann ein Bild haben oder nicht. Ich verwende die geschätzte Zeilenhöhe, wenn meine Zellen angezeigt werden.Wie kann ein über Storyboard erstelltes Bild bedingt angezeigt werden?

Die xib hat folgende Einschränkungen:

  • nachstehendes Leerzeichen
  • Führenden Raum Super
  • Bottom Raum Super
  • Top Space Super
  • Höhe < = 200
  • zu Super

Das funktioniert sehr gut, wenn ein Bild angezeigt wird, aber wenn es kein Bild gibt, rendert die Zelle mit einer Höhe von etwa 40 und ich bekomme eine Warnung.

Warnung nur einmal: Es wurde ein Fall erkannt, in dem die Bedingungen zweideutig eine Höhe von Null für die Inhaltsansicht einer Tabellenansichtszelle vorschlagen. Wir sind unter Berücksichtigung des Zusammenbruchs unbeabsichtigt und stattdessen Standardhöhe verwenden.

Was ist der beste Weg, um dies zu beheben? Ich möchte wirklich nicht versuchen, die Anzahl der Zeilen, die die Tabelle basierend auf einem Bildattribut hat, bedingt zu ändern.

Im Idealfall würde ich mag, dass Beschränkungen derart sind, dass die oben genannten Einschränkungen benutzen, angezeigtes Bild Kante zu Kante, clipping ist in Ordnung, mit einer maximalen Höhe von 200 oder kein Bild ist die Höhe ist 0.

-Code in - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

EntityContentObject *object = (EntityContentObject *)self.resultsArray[0]; 
self.imageURLString = object.entityPicture; 

NSLog(@"IMAGE URL STRING: %@", self.imageURLString); 

ImageTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ideaImgCell"]; 

if (!cell) 
{ 
    [tableView registerNib:[UINib nibWithNibName:@"ImageTableViewCell" bundle:nil] forCellReuseIdentifier:@"ideaImgCell"]; 
    cell = [tableView dequeueReusableCellWithIdentifier:@"ideaImgCell"]; 
} 

if([self.imageURLString isEqualToString:@""]){ 
    // no image to display; 
}else{ 
    [cell.ideaImage setImageWithURL:[NSURL URLWithString:self.imageURLString] placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 
} 

NSLog(@"CELL IDEA IMAGE HEIGHT: %@", NSStringFromCGRect(cell.ideaImage.frame)); 
return cell; 
+0

Muss die Höhe 0 sein? Eine billige Abkürzung wäre 1 zu verwenden, indem Höhe> = 1 gesetzt wird. – Ben

Antwort

0

ich glaube, Sie dieses https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithSelf-SizingTableViewCells.html

sehen muss müssen, schreiben diese Zeilen in Ihrem Projekt

-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath { 
     if(no image){ // put condition 
      return 0; 
     } 
     else{ 
     return 200; 
     } 
    } 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; 
     { 
    if(no image){ 
    return 0; 
    } 
    else{ 
    return UITableViewAutomaticDimension; 
    } 

} 
Verwandte Themen