我试图在子任务文本之前添加项目符号点,然后在其上添加删除线。问题是,如果我使用字符串插值并在子任务名称之前加上任何内容,则不会显示删除线。但是,如果我仅将按钮标题设置为我的子任务名称并尝试删除线,那么它将起作用。
subtaskButton.setTitle("- \(subtask.name)", for: .normal)
strikethrough(text: subtask.name, label: subtaskButton.titleLabel!)
private func strikethrough(text: String, label: UILabel) {
let attributedString = NSMutableAttributedString(string: text)
attributedString.addAttribute(.strikethroughStyle, value: NSUnderlineStyle.single.rawValue, range: NSMakeRange(0, attributedString.length))
label.attributedText = attributedString
}
^不起作用
subtaskButton.setTitle("\(subtask.name)", for: .normal)
subtaskButton.setTitle(subtask.name, for: .normal)
^这两项工作
答案 0 :(得分:2)
尝试使用setAttributedTitle(_:for:)
而不是直接设置标签的attributedText
。
private func strikethrough(text: String, button: UIButton) {
let attributedString = NSMutableAttributedString(string: text)
attributedString.addAttribute(.strikethroughStyle, value: NSUnderlineStyle.single.rawValue, range: NSMakeRange(0, attributedString.length))
button.setAttributedTitle(attributedString, for: .normal)
}