2017-04-25 5 views
0

Ich habe gerade meinen Code in swift 3 von swift 2.3 geändert. Der folgende Code funktioniert gut mit swift 2.3 aber es gibt keinen Effekt mit swift 3.Swift 3 Farbe des ausgewählten Textes in UITextView ändern

Ich möchte einen benutzerdefinierten Texteditor entwickeln. Und lassen Sie den Benutzer Text auswählen und ändern Sie die Farbe. Dafür benutze ich diesen Code.

let selectedRange = textView.selectedRange 

     let currentAttr = textView.textStorage.attributes(at: selectedRange.location, effectiveRange: nil) 

     var attrName = NSForegroundColorAttributeName 

     if !isForeGround{ 
      attrName = NSBackgroundColorAttributeName 
     } 

     if currentAttr[attrName] == nil || currentAttr[attrName] as! UIColor != selectedUIColor{ 

      let dict = [attrName:selectedUIColor] 

      let currentFont = currentAttr[NSFontAttributeName] 
      let fontDescriptor = (currentFont! as AnyObject).fontDescriptor 
      let updatedFont = UIFont(descriptor: fontDescriptor!, size: 0.0) 
      let dict2 = [NSFontAttributeName: updatedFont] 

      textView.textStorage.beginEditing() 

      if currentAttr.count>0{ 
       textView.textStorage.addAttributes(dict, range: selectedRange) 
      }else{ 
       textView.textStorage.setAttributes(dict, range: selectedRange) 
      } 
      textView.textStorage.addAttributes(dict2, range: selectedRange) 
      textView.textStorage.endEditing() 
     } 

Erfolgreich ausgeführt, aber die Textfarbe wird nicht beeinflusst.

Antwort

0

Das funktionierte für mich.

Zuerst müssen Sie Ihre ausgewählten Text fangen, mit:

let selectedText = textView.selectedRange

Dann erstellen Sie das Attribut:

let myAttribute = [ NSForegroundColorAttributeName: selectedUIColor]

Und schließlich:

textView.textStorage.addAttributes(myAttribute, range: selectedText)

Dies muss in einer Aktion von einem beliebigen Absender aufgerufen werden

Hoffe, es funktioniert auch für Sie! Grüße

Verwandte Themen