【发布时间】:2016-12-20 14:27:38
【问题描述】:
我有一个自定义 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
我花了很多时间在谷歌上搜索它,但无法找出问题所在。请帮忙。非常感谢
【问题讨论】:
-
UIImageView 有什么限制吗?
-
是的。有 4 个。
-
width = 0.5 的 superview 宽度尾随空格到 prdTitle、prdPrice 和 iconStack
-
放置一个具有相同约束的容器 UIView,然后添加具有 (0,0,0,0) 框架的 UIImageView。也许它有效
-
嗨。谢谢您的帮助!原来是约束。没有为图像设置高度。上帝的约束很糟糕。
标签: ios swift uitableview uiimageview