突出显示时将 UILabel 字体更改为粗体

Posted

技术标签:

【中文标题】突出显示时将 UILabel 字体更改为粗体【英文标题】:Change UILabel font to bold when highlighted 【发布时间】:2016-07-28 20:59:12 【问题描述】:

我有一个带有静态单元格的 UITableView。每个单元格都有一些自定义标签。如果单元格被选中,其中的标签会自动设置为突出显示。发生这种情况时,我想将其文本更改为粗体。大约有 50 个标签,所以我不想有 50 个网点。有什么想法可以做到这一点吗?

【问题讨论】:

您可能应该对单元格进行子类化以在选中时更改标签字体。 【参考方案1】:

好的,我想通了。如果我使用 didSelectRowAtIndexPath,我将不得不创建 50 多个插座或切换到动态内容。相反,我在子类中覆盖 UILabel 的突出显示属性并在那里进行更改。

class HighlightLabel: UILabel 

    override var highlighted: Bool 
        didSet 
            if highlighted 
                self.font = UIFont.boldSystemFontOfSize(self.font.pointSize)
             else 
                self.font = UIFont.systemFontOfSize(self.font.pointSize)
            
           
    

【讨论】:

【参考方案2】:

你应该提供的委托方法:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
        let cell = tableView.cellForRowAtIndexPath(indexPath)

        for view in cell.contentView.subviews
            if view.isKindOfClass(UILabel) 
                 //Magic

            
        

然后恢复正常:

override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) 
        let cell = tableView.cellForRowAtIndexPath(indexPath)

        for view in cell.contentView.subviews
            if view.isKindOfClass(UILabel) 
                 //Un-Magic
            
        

【讨论】:

不。这需要创建网点。

以上是关于突出显示时将 UILabel 字体更改为粗体的主要内容,如果未能解决你的问题,请参考以下文章

UILabel 粗体/突出显示所有出现的子字符串

如何在 UILabel 上仅突出显示触摸文本的背景

突出显示表格视图单元格 TextLabel 文本颜色

将突出显示的文本更改为不同的颜色

将 UIImageView 从正常更改为突出显示不起作用

仅突出显示 UILabel 中的文本