Ich hatte eine UITextView
, die Telefonnummern und Links erkennt, aber dies überschreibt meine fontColor
und ändert sie in blueColor
. Gibt es eine Möglichkeit, die Farbe automatisch erkannter Links zu formatieren, oder sollte ich eine manuelle Version dieser Funktion ausprobieren?
iphone
uitextview
iphone-sdk-3.0
uicolor
Leandro Alves
quelle
quelle
Antworten:
Auf iOS 7 können Sie den Satz
tintColor
von derUITextView
. Dies wirkt sich sowohl auf die Linkfarbe als auch auf die Cursorzeile und die ausgewählte Textfarbe aus.iOS 7 hat außerdem eine neue Eigenschaft hinzugefügt,
UITextView
mitlinkTextAttributes
der Sie den Linkstil vollständig steuern können.quelle
NSFontAttributeName
mitlinkTextAttributes
. Ich musste die Schriftart manuell im gleichen Bereich wie meineNSLinkAttributeName
Anstatt ein UITextView zu verwenden, habe ich ein UIWebView verwendet und die "Links zur automatischen Erkennung" aktiviert. Um die Linkfarbe zu ändern, haben Sie einfach ein reguläres CSS für das Tag erstellt.
Ich habe so etwas benutzt:
quelle
Sie können das
UIAppearance
Protokoll verwenden, um Änderungen für alle Textansichten anzuwenden:Swift 4.x:
Swift 3.x:
Swift 2.x:
Ziel c:
Aussehen für
UITextView
ist nicht dokumentiert, funktioniert aber gut.Beachten Sie die
UIAppearance
Hinweise:Mit anderen Worten: Dem Aufruf diesen Code in
init()
oderinit(coder:)
Methoden werden UI Objekt Aussehen ändern, aber Aufruf inloadView()
oderviewDidLoad()
von Viewcontroller wird nicht .Wenn Sie das Erscheinungsbild für die gesamte Anwendung festlegen möchten,
application(_:didFinishLaunchingWithOptions:)
ist dies ein guter Ort, um einen solchen Code aufzurufen.quelle
Das Problem mit UITextView
linkTextAttributes
ist, dass es für alle automatisch erkannten Links gilt. Was ist, wenn verschiedene Links unterschiedliche Attribute haben sollen?Es stellt sich heraus, dass es einen Trick gibt: Konfigurieren Sie die Links als Teil des zugewiesenen Textes der Textansicht und setzen Sie das
linkTextAttributes
auf ein leeres Wörterbuch .Hier ist ein Beispiel in iOS 11 / Swift 4:
quelle
Sie können die Hyperlinkfarbe in einer Textansicht folgendermaßen ändern:
In der Nib-Datei können Sie im Eigenschaftenfenster den Farbton auf die gewünschte Farbe ändern.
oder Sie können dies auch programmgesteuert mit dem folgenden Code tun
quelle
Die Farbtonfarbe kann auch im Storyboard vorgenommen werden
quelle
Ich habe in der Tat einen anderen Weg gefunden, ohne eine Webansicht zu verwenden, aber denke daran, dass dies eine private API verwendet und im Appstore abgelehnt werden kann:
EDIT: Meine App wurde von Apple genehmigt, obwohl die private API verwendet wird!
Deklarieren Sie zuerst eine Kategorie in UITextView mit den Methoden
Sie machen nur Folgendes:
Schreiben Sie nun eine Methode für bunte Links:
Das Stilattribut wird für alle Arten von Links mit einer bestimmten Farbe festgelegt.
UITextViews werden wie über divs in Webiview gerendert, sodass Sie sogar noch weiter gehen und jeden Link-Typ separat einfärben können:
Dies
x-apple-data-detectors-type="link"
ist der Indikator für den genauen Typ des LinksBEARBEITEN
Auf
iOS7
diese nicht mehr funktioniert. In iOS7 können Sie die Linkfarbe von UITextViews leicht ändern, indem Sie die Farbtonfarbe festlegen. Sie sollten nicht anrufenSie werden keine Ausnahme mehr bekommen. Gehen Sie stattdessen wie folgt vor, wenn Sie iOS 7 und niedriger unterstützen möchten:
quelle
Swift 5 Antwort
Schön und einfach
quelle
EDIT: Mach es nicht mit
UITextView
, benutze esUIWebView
stattdessen.Sie müssen dafür ein Stylesheet erstellen. Definieren Sie dort eine Klasse mit der gewünschten Farbkombination.
Verwenden Sie jetzt die Klasse 'Headercopy' in Ihrer HTML-Seite wie folgt:
Dadurch wird die Telefonnummer in der gewünschten Farbe mit Klickfunktion angezeigt.
quelle
Dieser Code legt die Farbe einer Telefonnummer auf einem I-Phone fest, macht jedoch die automatische Anrufverbindung ungültig.
quelle
So habe ich es mit Swift 5 gemacht:
quelle