Einstellen der Hintergrundfarbe / Highlight-Farbe für einen String Bereich gegeben mit Core-Text
-
12-10-2019 - |
Frage
Ich habe einen Text mit gelegtem Kern Text in meinem iPhone App. Ich NSAttributedString
mit für bestimmte Bereiche bestimmte Stile im Text zu setzen.
Ich kann nicht ein Attribut zu finden für die Einrichtung einen Hintergrund / Highlight-Farbe erscheinen, obwohl es scheint, wäre es möglich ist. Ich kann nicht einen Attributnamen Konstante finden, die relevant und in der Dokumentation klang nur Listen:
kCTCharacterShapeAttributeName
kCTFontAttributeName
kCTKernAttributeName
kCTLigatureAttributeName
kCTForegroundColorAttributeName
kCTForegroundColorFromContextAttributeName
kCTParagraphStyleAttributeName
kCTStrokeWidthAttributeName
kCTStrokeColorAttributeName
kCTSuperscriptAttributeName
kCTUnderlineColorAttributeName
kCTUnderlineStyleAttributeName
kCTVerticalFormsAttributeName
kCTGlyphInfoAttributeName
kCTRunDelegateAttributeName
Craig Hockenberry, Entwickler von Twitterrific hat öffentlich gesagt, auf Twitter, dass er nutzt Core-Text die Tweets zu machen, und Twitterrific hat diesen Hintergrund / Highlight, dass ich rede, wenn Sie einen Link berühren.
Jede Hilfe oder Hinweise in der richtigen Richtung wäre fantastisch, danke.
Edit: Hier ist ein Link zum Tweet Craig geschrieben Erwähnen „Core-Text, zugeschrieben Strings und eine Menge harter Arbeit“, und die folgen , die mit genannten CTFrameSetter Metriken zu arbeiten, wenn Berührungen mit Links kreuzen.
Lösung
Am Ende hatte ich die Core-Text-Metriken Methoden zu verwenden (immer der Bereich, Grenzen, Ursprung der Linien usw.) das Begrenzungsrechteck der Verbindung zu berechnen. Sobald ich eine rect für jede Zeile der Verbindung überspannt hatte, zog ich den Hintergrund in den Kontext, bevor Sie den Text über sie neu erstellt.
Es scheint ein verdammt viel Arbeit, aber es funktioniert.
Andere Tipps
Mit iOS 6, ich glaube, Sie den Effekt bekommen Sie suchen mit: NSBackgroundColorAttributeName. Wie zum Beispiel:
[attributedString addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:selectedRange];