2016-06-15 3 views
0

Попытка иметь гладкую динамическую высоту, в настоящее время она работает, но она глючит от одного размера до динамического размера с не выглядит хорошо.Лучший способ достичь динамической высоты ячейки для UIImageView внутри tableViewCell?

Heres мой код внутри cellForRowAtIndexPath

cell.productImageView.file = (PFFile *)object[@"image"]; 
[cell.productImageView loadInBackground:^(UIImage * _Nullable image, NSError * _Nullable error) { 


      cell.imageHeightConstraint.constant = image.size.height/image.size.width * cell.cardView.frame.size.width; 
      [cell.productImageView setNeedsUpdateConstraints]; 

      NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; 
      if (indexPath != nil) { 
       [self.tableView beginUpdates]; 
       [self.tableView endUpdates]; 
      } 

      [UIView animateWithDuration:0.50f animations:^{ 
       [cell.cardView layoutIfNeeded]; 
      }]; 

    }]; 

Так как вы можете видеть, я просто обновить ограничение высоты ImageView, а затем клетка изменяет соответственно. Но все еще глючный.

Есть ли лучший способ?

+0

Вы не должны возиться с макетом в 'cellForRowAtIndexPath'. Существует метод 'heightForRowAtIndexPath', который вы должны реализовать, чтобы установить высоту строки. – user3386109

+0

Не могли бы вы показать мне программное решение? @ user3386109 – farhan

+0

создать пользовательский элемент xib и использовать ограничения автоматической компоновки. –

ответ

1

Вы можете решить вашу проблему, добавив следующие строки в viewDidLoad и autolayout.

_tblView.delegate = self; 
_tblView.dataSource = self; 
self._tblView.estimatedRowHeight = 80; // The estimatedRowHeight but if is more this autoincremented with autolayout 
self._tblView.rowHeight = UITableViewAutomaticDimension; 
[self._tblView setNeedsLayout]; 
[self._tblView layoutIfNeeded]; 
self._tblView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0) ; 

Вот Дополнительная информация:

https://www.raywenderlich.com/87975

http://candycode.io/automatically-resizing-uitableviewcells-with-dynamic-text-height-using-auto-layout/

Я надеюсь, это поможет вам ..!

Смежные вопросы