iOS 10.3:不呈现NSStrikethroughStyleAttributeName

时间:2017-03-30 08:26:08

标签: ios iphone swift ios10.3

这是我用String扩展编写的函数。它将返回一个属性字符串。它不会在我的UILabel上呈现归属文本。

func strikeThroughLine(color: UIColor, textFont: UIFont, textColor: UIColor) -> NSAttributedString {
    let attributeString = NSMutableAttributedString(string: self)
    let range = NSMakeRange(0, attributeString.length)
    attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: range)
    attributeString.addAttribute(NSStrikethroughColorAttributeName, value: color, range: range)
    attributeString.addAttribute(NSFontAttributeName, value: textFont, range: range)
    attributeString.addAttribute(NSForegroundColorAttributeName, value: textColor, range: range)
    return attributeString
}

我制作自定义UILabel类并覆盖drawText函数,它适用于NSStrikethroughStyleAttributeName属性。但它不支持简单string中的多行文本。

override func drawText(in rect: CGRect) {
    guard let attributedText = attributedText else {
        super.drawText(in: rect)
        return
    }

    if #available(iOS 10.3, *) {
        attributedText.draw(in: rect)
    } else {
        super.drawText(in: rect)
    }
}

0 个答案:

没有答案