美文网首页
Swift设置UITableViewCell 背景色

Swift设置UITableViewCell 背景色

作者: 小黑技术 | 来源:发表于2022-04-12 15:49 被阅读0次

    在UITableViewCell的子类文件(CustomTableViewCell.swift)中实现如下方法即可

    override func setSelected(selected: Bool, animated: Bool) {

        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state

        ifselected {

            self.backgroundColor = UIColor.orangeColor()

        }else{

            self.backgroundColor = UIColor.whiteColor()

        }

    }

    运行工程,可能你会发现,当你点击单元格的时候,选中样式依旧是系统样式,如下图:

    这是什么原因导致的呢?打开视图层级,我们就会发现,其实我们已经设置成功了,只是被遮住了,如下图:

    那应该如何解决呢?其实很简单,只需要修改cell的selectionStyle属性即可,如下所示:

    1cell.selectionStyle = UITableViewCellSelectionStyle.None

    现在,我们就完成了自定义单元格选中样式了,特简单吧?

    延伸

    有时可能会有这种需求,就是我不需要选中背景色,但是我想在点击某个单元格的时候闪一下,即背景色突变一下就OK,像这种需求又改如何解决呢?

    首先,我们需要实现如下方法,当单元格不管是选中也好,未选中也罢,都设为白色。

    override func setSelected(selected: Bool, animated: Bool) {

        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state

        ifselected {

            self.backgroundColor = UIColor.whiteColor()

        }else{

            self.backgroundColor = UIColor.whiteColor()

        }

    }

    其次,在代理方法中,做如下操作:

    func tableView(tableView: UITableView, didHighlightRowAtIndexPath indexPath: NSIndexPath) {

        let cell = tableView.cellForRowAtIndexPath(indexPath)

        // change the cell background color

        cell?.backgroundColor = UIColor.redColor()

    }

    除了在代理方法中操作,还可以在自定义单元格中实现,效果一致,只是无需通过代理方法实现,具体实现如下:

    override func setHighlighted(highlighted: Bool, animated: Bool) {

        ifhighlighted {

            self.backgroundColor = UIColor.redColor()

        }else{

            self.backgroundColor = UIColor.whiteColor()

        }

    }

    相关文章

      网友评论

          本文标题:Swift设置UITableViewCell 背景色

          本文链接:https://www.haomeiwen.com/subject/ithnsrtx.html