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

时间:2016-07-28 20:59:12

标签: ios swift uitableview uilabel

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

2 个答案:

答案 0 :(得分: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)
            }
        }   
    }
}

答案 1 :(得分:0)

您应该提供委托方法:

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
            }
        }
}