2017-02-22 1 views
0

I hav zwei fuction geschrieben unterstrichen in einen String Hinzufügen und Entfernen von Unterstrichen:Ios Swift Toggle Unterstrichen zugeschriebenen Zeichenfolge

ich mit einem Knopf unterstreichen wechseln möchten. Also, wie ich überprüfen, ob NSMutableAttributedString Attribut unterstreichen:

func addUlnTxtFnc(TxtPsgVal :String) -> NSMutableAttributedString 
{ 
    let TxtRngVal = NSMakeRange(0, TxtPsgVal.characters.count) 
    let TxtUnlVal = NSMutableAttributedString(string: TxtPsgVal) 
    TxtUnlVal.addAttribute(NSUnderlineStyleAttributeName, value:NSUnderlineStyle.StyleSingle.rawValue, range: TxtRngVal) 

    return TxtUnlVal 
} 

func rmvUlnTxtFnc(TxtPsgVal :NSMutableAttributedString) -> NSMutableAttributedString 
{ 
    let TxtRngVal = NSMakeRange(0, TxtPsgVal.string.Len()) 
    TxtPsgVal.removeAttribute(NSUnderlineStyleAttributeName, range: TxtRngVal) 

    return TxtPsgVal 
} 

Antwort

2

Sie können überprüfen, indem Sie die Funktion .enumerateAttribute(attrName:, inRange:, options:, usingBlock:) auf dem rufenden NSMutableAttributedString Sie als Parameter erhalten:

func rmvUlnTxtFnc(TxtPsgVal: NSMutableAttributedString) -> NSMutableAttributedString { 
    let TxtRngVal = NSMakeRange(0, TxtPsgVal.length) 
    TxtPsgVal.enumerateAttribute(NSUnderlineStyleAttributeName, inRange: TxtRngVal, options: .LongestEffectiveRangeNotRequired) { attribute, range, pointer in 
     if attribute != nil { 
      TxtPsgVal.removeAttribute(NSUnderlineStyleAttributeName, range: range) 
     } 
    } 
    return TxtPsgVal 
} 

Auch können Sie verkürzen Ihre erste Funktion zu einer einzigen Zeile:

func addUlnTxtFnc(TxtPsgVal: String) -> NSMutableAttributedString { 
    return NSMutableAttributedString(string: TxtPsgVal, attributes: [NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue]) 
} 

Nebenbei, Ihr Code entspricht nicht der Swift style guidelines von der Swift-Community vorgeschlagen.