Color-Attribut wird in NSAttributedString mit NSLinkAttributeName @ ignorie
In einem (nNSAttributedString
, ein Buchstabenbereich hat ein Link-Attribut und ein benutzerdefiniertes Farbattribut.
In Xcode 7 mit Swift 2 funktioniert es:
In Xcode 8 mit Swift 3 wird die benutzerdefinierte zugewiesene Farbe für den Link immer ignoriert (im Screenshot sollte sie orange sein).
Hier ist der Code zum Testen.
Swift 2, Xcode 7:
import Cocoa
import XCPlayground
let text = "Hey @user!"
let attr = NSMutableAttributedString(string: text)
let range = NSRange(location: 4, length: 5)
attr.addAttribute(NSForegroundColorAttributeName, value: NSColor.orangeColor(), range: range)
attr.addAttribute(NSLinkAttributeName, value: "http://somesite.com/", range: range)
let tf = NSTextField(frame: NSRect(x: 0, y: 0, width: 200, height: 50))
tf.allowsEditingTextAttributes = true
tf.selectable = true
tf.stringValue = text
tf.attributedStringValue = attr
XCPlaygroundPage.currentPage.liveView = tf
Swift 3, Xcode 8:
import Cocoa
import PlaygroundSupport
let text = "Hey @user!"
let attr = NSMutableAttributedString(string: text)
let range = NSRange(location: 4, length: 5)
attr.addAttribute(NSForegroundColorAttributeName, value: NSColor.orange, range: range)
attr.addAttribute(NSLinkAttributeName, value: "http://somesite.com/", range: range)
let tf = NSTextField(frame: NSRect(x: 0, y: 0, width: 200, height: 50))
tf.allowsEditingTextAttributes = true
tf.isSelectable = true
tf.stringValue = text
tf.attributedStringValue = attr
PlaygroundPage.current.liveView = tf
Ich habe einen Fehlerbericht an Apple gesendet, aber in der Zwischenzeit wäre es großartig, wenn jemand eine Idee für eine Fehlerbehebung oder Problemumgehung in Xcode 8 hätte.