选中后,在自定义UITableViewCell中调暗UIImageView

时间:2017-07-21 13:27:33

标签: ios uitableview uiimageview

我实现了一个自定义的UITableView单元格。

一切都很好,直到我点击了我的tableview单元格。

通常,当我点击它时,tableview单元格会变暗。

这是因为cell.selectionStyle被设置为.default,而UITableViewCell的子类通过调用setHighlighted来调暗自己(_ highlight:Bool,animated:Bool)。

我的问题是,在我的表中选择行(单元格)时,UITableViewCell内容视图中包含的除UIImageView之外的所有内容都会被正确变暗。

我尝试在我的UIImgeView上添加黑色UIView叠加层,并覆盖我的自定义tableview单元格的setHighlighted,以改变UIView的不透明度以匹配其余的单元格内容。但是,这不仅影响每次都无法可靠地触发,而且它也不会与其余的单元组件进行相同的动画。叠加层的不透明度变化是即时的,而iOS提供的默认调光效果是渐进的。

我真的很感激任何见解。我想这是许多其他人可能有的问题,但谷歌搜索没有产生任何结果。谢谢。为了以防万一,我在下面包含了我的自定义UITableViewCell的代码。

(?:/\w+)*

}

1 个答案:

答案 0 :(得分:0)

我认为你的问题在

override func setHighlighted(_ highlighted: Bool, animated: Bool) {
     super.setSelected(highlighted, animated: animated)

    /* Logic to dim imageview */
    if highlighted {
        imageDim.backgroundColor = UIColor.black.withAlphaComponent(0.2)
    } else {
        imageDim.backgroundColor = UIColor.black.withAlphaComponent(0.0)
    }
}

据我所知,当您选择单元格时,不会调用UITableViewCell的setHighlighted。 相反,将其更改为

override func setSelected(_ selected: Bool, animated: Bool) {
     super.setSelected(selected, animated: animated)

    /* Logic to dim imageview */
    if selected {
        imageDim.backgroundColor = UIColor.black.withAlphaComponent(0.2)
    } else {
        imageDim.backgroundColor = UIColor.black.withAlphaComponent(0.0)
    }
}