У меня был инструмент, UITextView
который обнаруживает номера телефонов и ссылки, но он отменяет мой fontColor
и меняет его на blueColor
. Есть ли способ отформатировать цвет автоматически обнаруженных ссылок, или я должен попробовать ручную версию этой функции?
iphone
uitextview
iphone-sdk-3.0
uicolor
Леандро Алвес
источник
источник
Ответы:
В iOS 7 вы можете установить
tintColor
расширениеUITextView
. Это влияет на цвет ссылки, а также на строку курсора и выбранный цвет текста.iOS 7 также добавила новое свойство к
UITextView
вызываемому,linkTextAttributes
которое, по-видимому, позволит вам полностью контролировать стиль ссылки.источник
NSFontAttributeName
withlinkTextAttributes
. Мне пришлось вручную указать шрифт в том же диапазоне, что и у меняNSLinkAttributeName
Вместо использования UITextView я использовал UIWebView и включил «автоматическое обнаружение ссылок». Чтобы изменить цвет ссылки, просто создайте обычный CSS для тега.
Я использовал что-то вроде этого:
источник
Вы можете использовать
UIAppearance
протокол для применения изменений для всех текстовых представлений:Swift 4.x:
Swift 3.x:
Swift 2.x:
Objective-C:
Внешний вид
UITextView
не задокументирован, но работает хорошо.Имейте в виду
UIAppearance
примечания:Другими слова: Вызов этого кода
init()
, илиinit(coder:)
методы будут изменять внешний вид пользовательского интерфейса объекта, но вызов вloadView()
илиviewDidLoad()
из ViewController не будет .Если вы хотите установить внешний вид для всего приложения,
application(_:didFinishLaunchingWithOptions:)
это хорошее место для вызова такого кода.источник
Проблема с UITextView в
linkTextAttributes
том, что он применяется ко всем автоматически обнаруживаемым ссылкам. Что, если вы хотите, чтобы разные ссылки имели разные атрибуты?Оказывается, есть уловка: настроить ссылки как часть текста с атрибутами текстового представления и установить
linkTextAttributes
для пустого словаря .Вот пример в iOS 11 / Swift 4:
источник
Вы можете изменить цвет гиперссылки в TextView следующим образом:
В файле «Перо» вы можете перейти в окно «Свойства» и изменить оттенок на любой желаемый цвет.
или вы также можете сделать это программно, используя приведенный ниже код
источник
Цвет оттенка можно также сделать в раскадровке
источник
Я действительно нашел другой способ без использования веб-просмотра, но имейте в виду, что он использует частный API и может быть отклонен в магазине приложений:
РЕДАКТИРОВАТЬ: мое приложение было одобрено Apple, хотя частное использование API!
Сначала объявите категорию в UITextView с помощью методов
Они просто делают следующее:
Теперь напишем метод для красочных ссылок:
Он устанавливает атрибут стиля с определенным цветом для всех типов ссылок.
UITextView отображаются в Webiview, как и в div, поэтому вы можете пойти дальше и раскрасить каждый тип ссылки отдельно:
Это
x-apple-data-detectors-type="link"
индикатор точного типа ссылки.РЕДАКТИРОВАТЬ
На
iOS7
этом больше не работает. В iOS7 вы можете легко изменить цвет ссылки UITextViews, установив цвет оттенка. Вы не должны звонитьбольше, вы получите исключение. Вместо этого сделайте следующее, если вы хотите поддерживать iOS 7 и ниже:
источник
Swift 5 Ответ
Красиво и просто
источник
РЕДАКТИРОВАТЬ: не делайте этого
UITextView
, используйтеUIWebView
вместо этого.Для этого вам нужно создать таблицу стилей. Определите там класс с нужной вам цветовой комбинацией -
теперь используйте класс 'headercopy' на своей html-странице, например:
это будет отображать номер телефона в нужном вам цвете с функцией щелчка.
источник
Этот код устанавливает цвет номера телефона на I-Phone, но аннулирует ссылку автоматического вызова.
источник
Вот как я это сделал с помощью Swift 5:
источник