Miałem, UITextView
który wykrywa numery telefonów i linki, ale to zastępuje mój fontColor
i zmienia go na blueColor
. Czy istnieje sposób na sformatowanie koloru automatycznie wykrytych linków, czy powinienem wypróbować ręczną wersję tej funkcji?
iphone
uitextview
iphone-sdk-3.0
uicolor
Leandro Alves
źródło
źródło
Odpowiedzi:
IOS 7 można ustawić
tintColor
zUITextView
. Wpływa na kolor łącza, a także linię kursora i wybrany kolor tekstu.W systemie iOS 7 dodano również nową właściwość do
UITextView
wywołania,linkTextAttributes
która wydaje się pozwalać w pełni kontrolować styl łącza.źródło
NSFontAttributeName
zlinkTextAttributes
. Musiałem ręcznie określić czcionkę w tym samym zakresie, co mójNSLinkAttributeName
Zamiast używać UITextView, użyłem UIWebView i włączyłem „automatyczne wykrywanie linków”. Aby zmienić kolor linku, właśnie utworzyłem zwykły CSS dla tagu.
Użyłem czegoś takiego:
źródło
Możesz użyć
UIAppearance
protokołu, aby zastosować zmiany do wszystkich widoków tekstu:Swift 4.x:
Swift 3.x:
Swift 2.x:
Cel C:
Wygląd
UITextView
nie jest udokumentowany, ale działa dobrze.Pamiętaj o
UIAppearance
uwagach:Innymi słowy: Wywołanie tej kod
init()
, lubinit(coder:)
metody będzie zmienić UI wygląd obiektu, ale dzwoniącloadView()
lubviewDidLoad()
od viewController nie będzie .Jeśli chcesz ustawić wygląd całej aplikacji,
application(_:didFinishLaunchingWithOptions:)
to dobre miejsce na wywołanie takiego kodu.źródło
Problem z UITextView
linkTextAttributes
polega na tym, że dotyczy on wszystkich automatycznie wykrytych linków. A co jeśli chcesz, aby różne linki miały różne atrybuty?Okazuje się, że jest pewna sztuczka: skonfiguruj linki jako część tekstu przypisanego do widoku tekstu i ustaw
linkTextAttributes
jako pusty słownik .Oto przykład w iOS 11 / Swift 4:
źródło
Możesz zmienić kolor hiperłącza w TextView w następujący sposób:
W pliku Nib możesz przejść do okna Właściwości i zmienić Tintę na dowolny kolor.
lub możesz to zrobić programowo, używając poniższego kodu
źródło
Kolor odcienia można również wykonać w serii ujęć
źródło
Znalazłem rzeczywiście inny sposób bez korzystania z widoku internetowego, ale pamiętaj, że korzysta z prywatnego interfejsu API i może zostać odrzucony w Appstore:
EDYCJA: Moja aplikacja została zatwierdzona przez Apple, chociaż prywatne użycie API!
Najpierw zadeklaruj kategorię w UITextView za pomocą metod
Robią tylko następujące rzeczy:
Teraz napisz metodę na kolorowe linki:
Ustawia atrybut stylu na określony kolor we wszystkich typach linków.
UITextViews są renderowane Webiview jak za pomocą elementów div, więc możesz pójść dalej i pokolorować każdy typ linku osobno:
To
x-apple-data-detectors-type="link"
wskaźnik dokładnego typu linkuEDYTOWAĆ
Na
iOS7
tym już nie działa. W iOS7 możesz łatwo zmienić kolor linku UITextViews, ustawiając kolor odcienia. Nie powinieneś dzwonićjuż będziesz miał wyjątek. Zamiast tego wykonaj następujące czynności, jeśli chcesz obsługiwać system iOS 7 i poniżej:
źródło
Szybka odpowiedź 5
Ładnie i prosto
źródło
EDYCJA: Nie rób tego za pomocą
UITextView
, użyjUIWebView
zamiast tego.Musisz do tego stworzyć arkusz stylów. Zdefiniuj tam klasę z potrzebną kombinacją kolorów-
teraz użyj klasy 'headercopy' na swojej stronie html w ten sposób-
Spowoduje to wyświetlenie numeru telefonu w wybranym kolorze z funkcją klikania.
źródło
Ten kod ustawi kolor numeru telefonu w I-Phone, ale unieważnia automatyczne łącze połączenia.
źródło
Oto jak to zrobiłem używając Swift 5:
źródło