不能删除具有字符串插值的文本?

时间:2019-01-08 05:54:57

标签: swift uilabel nsattributedstring

我试图在子任务文本之前添加项目符号点,然后在其上添加删除线。问题是,如果我使用字符串插值并在子任务名称之前加上任何内容,则不会显示删除线。但是,如果我仅将按钮标题设置为我的子任务名称并尝试删除线,那么它将起作用。

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)

^这两项工作

1 个答案:

答案 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)
}