我当前正在表视图中加载UIImage,但是问题是所有UIImage都超出了UIImageView。实际上,它们的高度等于电池的高度。
我做了一些研究,发现必须设置clipsToBounds = true
,但没有任何改变。
当我在表cellForRowAt IndexPath中设置单元格的imageView到本地保存的图像时,一切正常。
这是我使用getDataInBackground
从PFFiles获取UIImages数组的函数。
func getImagesArray() {
UIImagesArray.removeAll()
for i in 0..<self.imagesArray.count { // imagesArray is the PFFile array
self.imagesArray[i].getDataInBackground(block: { (data, error) in
if error != nil {
print(error?.localizedDescription)
} else {
if let imageData = data {
if let imageToDisplay = UIImage(data: imageData) {
self.UIImagesArray.append(imageToDisplay)
if self.imagesArray.count == self.UIImagesArray.count {
self.tableView.reloadData()
}
}
}
}
})
}
}
如果需要,这是cellForRowAt的代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "userCell", for: indexPath) as! feedUserCellTableViewCell
cell.imageView!.image = UIImagesArray[indexPath.row]
cell.username.text! = self.usernamesArray[indexPath.row]
cell.age.text! = String(self.agesArray[indexPath.row])
cell.country.text! = self.countriesArray[indexPath.row]
cell.countryFlagImageView.image! = self.getCoutryImageView(country: self.countriesArray[indexPath.row])
if self.sexArray[indexPath.row] == "Male" {
cell.sexImageView.image = #imageLiteral(resourceName: "male")
} else if self.sexArray[indexPath.row] == "Female" {
cell.sexImageView.image = #imageLiteral(resourceName: "female")
}
cell.selectionStyle = .none
return cell
}
您能解释一下这个错误吗,为什么getDataInBackground
会引起这个错误?
答案 0 :(得分:3)
问题是您有一个自定义单元格,您正在其中使用该单元格的内置imageView
来显示图像。不要那样做。
创建自己的自己图片视图,并为其提供一个名称不同的插座( not imageView
)。
赋予它约束,使其无法增长。 (图像视图“希望”增长到其图像的大小,因此您需要在整套约束条件下进行阻止。)
确保其内容模式为aspectFill
或aspectFit
。
确保其clipsToBounds
为true
(默认情况下为 not )。