tableview中的动态图像高度不适用于最初的几个单元格

时间:2017-04-05 11:13:06

标签: ios swift uitableview

我正在尝试在tableview中制作动态图像高度。我使用SDWebImage从URL下载图像。但它没有在少数初始单元

上工作

以下是我写的方法

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
            return UITableViewAutomaticDimension
    }


func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
        return UITableViewAutomaticDimension
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {       
    let shareDetailCell = tableView.dequeueReusableCell(withIdentifier: THShareDetailTableViewCell.className, for: indexPath) as! THShareDetailTableViewCell
                    shareDetailCell.selectionStyle = UITableViewCellSelectionStyle.none
                    shareDetailCell.likeButton.tag = indexPath.row

            //to set image dynamic height
    shareDetailCell.selectionStyle.socialPostImage.sd_setImage(with: URL(string: socialInteraction[indexpath.row].largeImageUrl), placeholderImage: nil, options: .retryFailed) { (image, error, imageCacheType, imageUrl) in
                    if image != nil {
                        let imgHeight = (image?.size.height)!
                       shareDetailCell.heightConstraintSocialImage.constant = (imgHeight * (self.socialPostImage.frame.size.width/imgHeight))
                    }else {
                        print("image not found")
                    }
                }
                    return shareDetailCell
            }

1 个答案:

答案 0 :(得分:2)

从你的代码工作中我发现了两件事,

  1. 永远不要从UITableViewAutomaticDimension返回estimatedHeightForRowAt,因为估计的高度永远不会是自动的,否则x-code无法理解它应该返回的高度。有时它有效,但不被认为是一种好的做法。

  2. 您在cellForRowAt方法中获取图像,这意味着您获取图像时已经设置了单元格的高度。因此,当系统在UITableViewAutomaticDimension方法之后知道该单元格的高度时,您的单元格图像只有高度heightForRowAt

  3.   

    建议你的问题。

    获取数据然后重新加载tableView,以便根据图像高度调整单元格高度。您也可以在分页中执行此操作。