我以编程方式更改UIImageView
内UITableViewCell
的高度。当有图片网址时,高度为100.0
,当图片网址为零时,身高是0.0
。
这是我在tableViewCell
类中使用的代码:
func setConstraints(_height:CGFloat){
self.commentImage.addConstraint(NSLayoutConstraint(item: self.commentImage,attribute: .height,relatedBy: .equal,toItem: self.commentImage,attribute: .width,multiplier: _height / 287.0,constant: 0))
self.commentImage.updateConstraints()
self.commentImage.layoutIfNeeded()
}
if let img = comment.image {
let imgUrl = URL(string: img)
self.commentImage.sd_setImage(with: imgUrl, placeholderImage: UIImage(named: "PlaceHolder Shop"))
setConstraints(_height: 100.0)
}else {
self.commentImage.image = nil
setConstraints(_height: 0.0)
}
现在的问题是,当我滚动tableview时,一些没有图像url的行,100.0
的高度为UIImageView
,留下一个空白区域,如果我滚动tableView非常快,有时行中的图像消失了。
我该怎么做才能解决这个问题?我在这里缺少什么?
答案 0 :(得分:0)
UITableViewCells被回收。您的setConstraints
方法实际上并未设置约束;它添加一个新约束。要正确执行此操作,只需在“接口”构建器中设置约束即可。在尺寸检查器中找到高度约束,然后双击它以在文档轮廓中选择它。选项从约束拖动到tableViewCell以创建名为heightConstraint的IBOutlet。按如下方式更改您的代码:
func setConstraints(_height:CGFloat){
heightConstraint.constant = height
commentImage.setNeedsLayout()
}