突出显示时将 UILabel 字体更改为粗体
Change UILabel font to bold when highlighted
我有一个带有静态单元格的 UITableView。每个单元格都有一些自定义标签。如果选中该单元格,其中的标签将自动设置为突出显示。发生这种情况时,我想将他们的文本更改为粗体。大约有 50 个标签,所以我不想有 50 个销售点。有什么想法可以实现吗?
您应该提供委托方法:
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
}
}
}
好的,我明白了。如果我使用 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)
}
}
}
}
我有一个带有静态单元格的 UITableView。每个单元格都有一些自定义标签。如果选中该单元格,其中的标签将自动设置为突出显示。发生这种情况时,我想将他们的文本更改为粗体。大约有 50 个标签,所以我不想有 50 个销售点。有什么想法可以实现吗?
您应该提供委托方法:
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
}
}
}
好的,我明白了。如果我使用 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)
}
}
}
}