删除Swift中tableview单元格中的模糊效果

时间:2016-01-15 19:09:11

标签: swift uiblureffect

我在我的IF clausure中,在cellForRowAtIndexPath方法中做到了这一点:

EventDate >= date('now')

在我的ELSE中,我想从cell.attachedImage中删除效果。

我该怎么办?

2 个答案:

答案 0 :(得分:3)

cellForRowAtIndexPath不应该向细胞添加子视图。这是有问题的,因为单元格被重用,如果你没有保留对你添加的内容的引用,你最终会多次添加视图,这会导致滚动速度问题,以及其他错误。

正确的方法是创建已经设置了视图的单元子类。您的子类可以包含引用视图的属性,以便您可以根据需要更改,隐藏,移动或从超级视图中删除它们。但是这个逻辑应该在细胞亚类中。

答案 1 :(得分:0)

您只需要从它的超视图中删除视觉效果视图。诀窍是找到正确的视图,以便在电池回收时移除。最简单的方法是将其存储在自定义UITableViewCell实现中:

class CustomTableViewCell: UITableViewCell {
    var visualEffectView: UIView?
    var attachedImage: UIImageView!
    // other views, including outlets

    func setupIsBlurred(isBlurred: Bool) {
        if isBlurred {
            if self.visualEffectView == nil {
                let blurEffect = UIBlurEffect(style: .Light)
                let visualEffectView = UIVisualEffectView(effect: blurEffect)

                visualEffectView.frame = self.attachedImage.bounds

                self.attachedImage.addSubview(visualEffectView)

                self.visualEffectView = visualEffectView
            }
        } else {
            self.visualEffectView?.removeFromSuperview()
            self.visualEffectView = nil
        }
    }
}