2016-05-28 29 views
0

mit Ich verwende autolayout.This mein Code ist es unter cellForRowAtIndexPath mit:Tableview Zelle Ändern der Größe nicht nach heruntergeladen Bildhöhe basierend auf Imageview Höhenbeschränkung Ändern SDWebImage (Autolayout)

cell.chatImage.sd_setImageWithURL(NSURL(string: newsFeed.postImage!), placeholderImage: UIImage(named: "default_profile"), completed: { (image, error, cacheType, imageURL) -> Void in 

       let height = ((image?.size.height)!/(image?.size.width)!) * (tableView.bounds.width - 16) 
       cell.chatImageHeight.constant = height 
       self.view.layoutIfNeeded() 
      }) 

Die Zelle die Größe nicht . Die Größe ändert sich erst nach dem Scrollen. Was soll ich machen? Da ich Auto-Layout verwende, implementiere ich heightForRowAtIndexPath nicht. Ich habe bereits UITableViewAutomaticDimension und estimatedRowHeight erwähnt.

+0

Warte Fixierung, so verwenden Sie uitableviewautomaticdimension oder nicht? Ich bin mir nicht sicher, wo du es erwähnt hast. – user3353890

+0

@ user3353890 Ich habe es bereits erwähnt in Sicht geladen. Das Problem tritt nur auf, wenn ich versuche, die Einschränkung innerhalb des Blocks zu aktualisieren. –

Antwort

0

Ich glaube, Sie haben self.view.setNeedsLayout() aufzurufen, das wird die ganze Sicht auf das Layout machen die Einschränkungen

cell.chatImage.sd_setImageWithURL(NSURL(string: newsFeed.postImage!), placeholderImage: UIImage(named: "default_profile"), completed: { (image, error, cacheType, imageURL) -> Void in 

       let height = ((image?.size.height)!/(image?.size.width)!) * (tableView.bounds.width - 16) 
       cell.chatImageHeight.constant = height 

       self.view.setNeedsLayout() 
       self.view.layoutIfNeeded() 

      }) 
+0

Nein, es funktioniert auch nicht. –

+0

mmm, können Sie geschätztRowHeight oder versuchen Sie dies, was funktionieren sollte ---------------------------------- ---------- cell.chatImageHeight.constant = Höhe UIView.animateWithDuration (0.3, Animationen: cell.contentView.layoutIfNeeded) tableView? .beginUpdates() tableView? .endUpdates() –

+0

Ich habe versucht tableview.beginUpdates und endUpdates, aber das ist nicht der richtige Weg und die App wird schließlich abstürzen, weil es immer wieder in Zelle für Zeile bei IndexPath aufgerufen wird. –