Swift: strikethroughStyle For Label (Middle Delete Line For Label)

Swift: strikethroughStyle For Label (Middle Delete Line For Label)

如何为标签添加删除线样式。 UILabel 中数字的中间删除行。查看附件图片以供参考。

使用属性字符串

截图

代码

NSDictionary * attribtues = @{NSStrikethroughStyleAttributeName:@(NSUnderlineStyleSingle),
                              NSStrikethroughColorAttributeName:[UIColor redColor]};
NSAttributedString * attr = [[NSAttributedString alloc] initWithString:@"label" attributes:attribtues];
self.label.attributedText = attr;

在故事板中为 UILabel 添加中间删除行

  1. 点击故事板中的 uilabel,查看实用程序。 SelectAttributed

  2. 点击字体图标,打开字体面板。

  3. Select您要更改的文字

  4. Select中线(例:单身)

  5. 完成。

以编程方式使用以下代码

更喜欢使用扩展程序:

extension String {
    func strikeThrough() -> NSAttributedString {
        let attributeString =  NSMutableAttributedString(string: self)
        attributeString.addAttribute(NSAttributedStringKey.strikethroughStyle, value: NSUnderlineStyle.styleSingle.rawValue, range: NSMakeRange(0,attributeString.length))
        return attributeString
    }
}

并调用这个函数

myLabel.attributedText = "my string".strikeThrough()

结果是这样的。

来自@krunal 对 Swift4 的回答的更新函数

extension String {
    func strikeThrough() -> NSAttributedString {
        let attributeString =  NSMutableAttributedString(string: self)
        attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: NSUnderlineStyle.single.rawValue, range: NSMakeRange(0,attributeString.length))
        return attributeString
    }
}

和调用函数是一样的

yourLabel.attributedText = "yourString".strikeThrough()

如果想使用 UILabel 扩展

extension UILabel {
  func strikeThroughText() {
    let attributeString =  NSMutableAttributedString(string: self.text ?? "")
    attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: NSUnderlineStyle.single.rawValue, range: NSMakeRange(0,attributeString.length))
    self.attributedText = attributeString
  }
}