【问题标题】:HighlightedTextColor changes the text color of UILabel when tableviewcell selectedHighlightedTextColor 在选择 tableviewcell 时更改 UILabel 的文本颜色
【发布时间】:2018-08-20 04:11:15
【问题描述】:

UITableViewCell被选中时,有很多例子可以改变UILabel文本的颜色。但所有示例都用以下几行解释

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
    }

} 

【问题讨论】:

    标签: ios iphone swift uitableview uilabel


    【解决方案1】:

    粗体线会导致任何问题。

    我认为在 UILabel 上使用此属性没有任何问题,如果您阅读此属性的文档,它会指出:

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

    more info here

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

    UILabel.highlightedTextColor = UIColor.red
    

    切换isHighlighted

    UILabel.isHighlighted = cell.isSelected
    

    更新

    要在设置cell.isSelected 时自动更改UILabel.isHighlighted,可以将UITableViewCell 子类化,如下所示:

    class MyTableViewCell: UITableViewCell {
    
        @IBOutlet var label = UILabel!
    
        override var isSelected: Bool {
            didSet {
                label.isHighlighted = isSelected
            }
        }
    
    }
    

    【讨论】:

    • 你的意思是说当 UITableViewCell 被选中时,UILabel 应该设置为 Highlighted。
    • 是的,它表示标签是否应该被高亮显示。 Enabled 和 Highlighted 都控制标签的外观,分别代表 isEnabled 和 isHighlighted 属性。未选中启用时,文本会变暗以指示它处于非活动状态。选中突出显示时,文本以突出显示的颜色呈现。更多信息developer.apple.com/documentation/uikit/uilabel
    • 我的代码可以在没有以下代码的情况下工作,覆盖 var isSeleted : Bool { didSet { label.isHighlighted = isSelected } } } 以供参考 我已经用我的代码更新了我的问题。
    猜你喜欢
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多