在tableViewCell中实现UIImageView的动态单元高度的最佳方法是什么?

时间:2016-06-15 04:06:32

标签: ios objective-c uitableview uiimageview

试图获得平滑的动态高度,目前它可以正常工作,但它从一个尺寸到动态尺寸的故障,看起来并不好。

继承我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的高度约束,然后单元格相应地调整大小。但仍然是个小故障。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以通过viewDidLoadautolayout添加以下行来解决您的问题。

_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/

我希望,它会帮助你......!