选中tableviewcell时,HighlightedTextColor会更改UILabel的文本颜色

时间:2018-03-12 07:35:01

标签: ios iphone swift uitableview uilabel

选择UILabel时,有许多示例可以更改UITableViewCell文字的颜色。但所有例子都用以下行解释

if cell.selected {
  cell.txtLabel1.textColor = UIColor.redColor()
}else {
  cell.txtLabel1.textColor = UIColor.blackColor()
} 

但设置 cell.txtLabel1.highlightedTextColor = UIColor.redColor()非常简单。粗体线是否会导致任何问题以及为什么其他示例没有粗体线实现?

没有设置isHighlighted UILabel也会在选择UITableViewCell时更改文本的颜色。代码粘贴在下面以供参考

class MenuViewCell: UITableViewCell {

    @IBOutlet weak var lblTitle:UILabel?
    @IBOutlet weak var imgIcon:UIImageView?

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
        let selectedView = UIView()
        selectedView.backgroundColor = UIColor(colorLiteralRed: 244.0/255.0, green: 244.0/255.0, blue: 245.0/255.0, alpha: 1)
        selectedBackgroundView = selectedView
        lblTitle?.highlightedTextColor = UIColor(colorLiteralRed: 224.0/255.0, green: 121.0/255.0, blue: 43.0/255.0, alpha: 1)
    }

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


        // Configure the view for the selected state
    }

} 

1 个答案:

答案 0 :(得分:1)

  

粗体线会导致任何问题。

我在UILabel上看到使用此属性时没有任何问题,如果您阅读了此属性的文档,则说明:

  

只要isHighlighted属性设置为true,此颜色就会自动应用于标签。

more info here

这是最有效的问题,但当然使用情况会有所不同,如下:

UILabel.highlightedTextColor = UIColor.red

切换isHighlighted

UILabel.isHighlighted = cell.isSelected

<强>更新

要在设置UILabel.isHighlighted时自动更改cell.isSelected,您可以继承UITableViewCell,如下所示:

class MyTableViewCell: UITableViewCell {

    @IBOutlet var label = UILabel!

    override var isSelected: Bool {
        didSet {
            label.isHighlighted = isSelected
        }
    }

}
相关问题