自定义UITableViewCell中的UIImageview未正确显示

时间:2016-12-20 14:27:38

标签: ios swift uitableview uiimageview

我有一个自定义的UITableViewCell。

class ProductRow: UITableViewCell {

@IBOutlet weak var iconStack: UIStackView!
@IBOutlet weak var prdImage: UIImageView!
@IBOutlet weak var prdPrice: UILabel!
@IBOutlet weak var prdTitle: UILabel!


override func awakeFromNib()
{
    super.awakeFromNib()
}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
    }
}

我通过扩展

加载UIImageView
extension UIImageView {
public func imageFromUrl(urlString: String)
{
    let myUrl = URL(string: "https://" + MobMenu.domain + "/" + MobMenu.shop + "/prd/" + urlString);

    let task = URLSession.shared.dataTask(with: myUrl!)
    {
        data, response, error in
        guard let data = data, error == nil else
        {
            print("error=\(error)")
            return
        }
        DispatchQueue.main.async
        {
            self.image = UIImage(data: data)
        }

    }
    task.resume()
}
}

我通过tableview函数

更新行中的字段
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    let myCell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! ProductRow

    let prdDTO = prdList[indexPath.row];

    //getURLImage(img : prdDTO.getPrdImg(), myCell : myCell)

    myCell.prdTitle.text = prdDTO.getPrdTitle()
    myCell.prdTitle.font =  UIFont(name: "HelveticaNeue-Thin", size: 12)
    myCell.prdPrice.text = prdDTO.getPrice()

    myCell.prdImage.imageFromUrl(urlString: prdDTO.getPrdImg())
    myCell.prdImage.contentMode = UIViewContentMode.scaleAspectFit
    myCell.prdImage.clipsToBounds = true
}

问题是这行代码myCell.prdImage.contentMode = UIViewContentMode.scaleAspectFit。如果我删除它,一切都应该是它应该是,但如果我删除它,结果图像将太大。如果我把它留在那里,然而图像被推到tableview

Image of app here

我花了很多时间在Google上搜索,但无法解决问题。请帮忙。非常感谢

1 个答案:

答案 0 :(得分:0)

首先,我建议您尝试提供适合自定义单元格类定义的方面。 您还应该将AutoTranslatingMasks设置为false并自己设置约束。 如果图像尺寸不太大,则应选择

image.renderingMode.alwaysOriginal

以便UITableViewCell不会更改