在tableview单元格中更改UIImageView显示/尺寸

时间:2016-06-07 18:35:34

标签: ios uitableview uiimageview hide

我想根据图片链接是否可用于该单元格行,在特定单元格的UITableview单元格中隐藏UIImageView。

如果某个单元格的后端没有图像网址,那么我想“禁用”UIImageview并回收其空间以使标签展开。 (UILabel位于左侧,UIImageView位于右侧。 因此,如果没有图像,那么如果标签文本有更多文本,我希望标签文本扩展到右边。)

我尝试了两种解决方案: 1.通过设置宽度约束将UIImageView的宽度更改为0。

let widthConstraint = NSLayoutConstraint(item: cell.articleImageView as UIView,
                            attribute: NSLayoutAttribute.Width,
                            relatedBy: .Equal,
                            toItem: nil,
                            attribute: NSLayoutAttribute.NotAnAttribute,
                            multiplier: 0,
                            constant: 0)
 cell.myImageView.addConstraint(widthConstraint) 

2。从单元格中删除imageview。

cell.myImageView.removeFromSuperView() 

但是当我滚动浏览时,其他单元格的图像也会受到影响并被隐藏起来。对于myImageView.hidden = true。

BTW,我使用tableView.dequeueReusableCellWithIdentifier(cellIdentifier,forIndexPath:indexPath)来检索单元格。 tableview和cell是在storyboard上创建的。

如何帮助如何在单元格内回收隐藏的UIImageview占用的空间,但在滚动时不会对其他行产生影响?

1 个答案:

答案 0 :(得分:0)

不是以编程方式添加约束,而是在Interface Builder中指定宽度,并在代码中创建宽度约束的出口。然后,在将单元格出列后,您可以将宽度约束的constant属性更改为0(如果您希望它隐藏),或者更改为您想要扩展宽度的任何属性。

编辑:此外,我按照@MuhammadZohaibEhsan在以下评论中的建议,将约束的constant属性重置为单元格prepareForReuse()方法中的原始大小。