Add NSUnderlineStyle.PatternDash to NSAttributedString in Swift?

前端 未结 4 698
佛祖请我去吃肉
佛祖请我去吃肉 2021-02-12 14:46

I\'m trying to add an underline to some text in my Swift app. This is the code I have currently:

let text = NSMutableAttributedString(string: self.currentHome.na         


        
4条回答
  •  终归单人心
    2021-02-12 15:43

    Here's a full example of creating a UILabel with underlined text:

    Swift 5:

    let homeLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 30))
    
    let text = NSMutableAttributedString(string: "hello, world!")
    
    let attrs = [NSAttributedString.Key.underlineStyle: NSUnderlineStyle.patternDash.rawValue | NSUnderlineStyle.single.rawValue]
    
    text.addAttributes(attrs, range: NSRange(location: 0, length: text.length))
    
    homeLabel.attributedText = text
    

    Swift 4:

    let homeLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 30))
    
    let text = NSMutableAttributedString(string: "hello, world!")
    
    let attrs = [NSAttributedStringKey.underlineStyle: NSUnderlineStyle.patternDash.rawValue | NSUnderlineStyle.styleSingle.rawValue]
    
    text.addAttributes(attrs, range: NSRange(location: 0, length: text.length))
    
    homeLabel.attributedText = text
    

    Swift 2:

    Swift allows you to pass an Int to a method that takes an NSNumber, so you can make this a little cleaner by removing the conversion to NSNumber:

    text.addAttribute(NSUnderlineStyleAttributeName, value: NSUnderlineStyle.StyleDouble.rawValue, range: NSMakeRange(0, text.length))
    

    Note: This answer previously used toRaw() as used in the original question, but that is now incorrect as toRaw() has been replaced by the property rawValue as of Xcode 6.1.

提交回复
热议问题