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

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

【问题讨论】:

  • 您可能应该对单元格进行子类化以在选中时更改标签字体。

标签: ios swift uitableview uilabel


【解决方案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
                }
            }
    }
    

    【讨论】:

    • 不。这需要创建网点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    • 2015-10-28
    • 2012-12-10
    • 2018-08-21
    相关资源
    最近更新 更多