2016-05-28 1 views
0

Я использую autolayout.This мой код, используя его под cellForRowAtIndexPath:TableView клетка не изменение размеров после изменения высоты ImageView ограничение на основе высоты изображения, загружаемые с помощью 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() 
      }) 

Клетка не изменяет размер , Он изменяется только после прокрутки. Что мне делать? Поскольку я использую автозапуск, я не внедряю heightForRowAtIndexPath. Я уже упоминал UITableViewAutomaticDimension и estimatedRowHeight.

+0

ожидания, поэтому вы используете uitableviewautomaticdimension или нет? Я не знаю, где вы это упомянули. – user3353890

+0

@ user3353890 Я уже упоминал об этом в поле зрения. Проблема возникает только тогда, когда я пытаюсь обновить ограничение внутри блока. –

ответ

0

Я думаю, вы должны вызвать self.view.setNeedsLayout() это будет сделать весь вид макет фиксирующих ограничениями

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

Нет, это тоже не работает. –

+0

ммм, можете ли вы увеличить оценку RowHeight или попробуйте то, что должно работать ---------------------------------- ---------- cell.chatImageHeight.constant = height UIView.animateWithDuration (0,3, анимация: cell.contentView.layoutIfNeeded) tableView? .beginUpdates() tableView? .endUpdates() –

+0

У меня есть попробовал tableview.beginUpdates и endUpdates, но это не самый правильный способ, и приложение сокрушится в конце концов, потому что оно снова и снова вызывается в ячейке для строки в indexPath. –