Компонент для текста смешивания, ссылки и кликабельный текст
-
26-09-2019 - |
Вопрос
У меня проблема. Нужен компонент для смешивания текста, ссылок и кликабельный текст.
В приложении Facebook можно увидеть пример.http://img193.imageshack.us/img193/1355/example1t.jpg.
Кто-то знает, чем может сделать это. Например, UIrextView может обнаруживать ссылки в тексте, но не может вставить кликабельный текст.
Спасибо за вашу помощь.
Решение
Я использовал Coretext для этой цели.
Вычисление смещенных кран было немного сложно, поскольку я продолжал забывать перевернуть систему координат, но в конечном итоге я получил его, и вот краткий обзор того, как вы можете сделать это:
- Создайте свой текст как
NSMutableAttributedString
(Так как вам придется изменять его в какой-то момент). - Сканируйте его для текста, который вы хотите добавить ссылку, вставьте два атрибута: 1) цвет текста, который является например, синий; и 2) пользовательский атрибут ссылки (назовите его все, что вам нравится, сделайте его значение, чтобы быть ссылкой, которую вы хотите перейти))
- Оказывать текст в вашем
drawRect:
. Отказ Вам нужно будет создатьCTFramesetterRef
и аCTFrameRef
(Последнее вы захотите сохранить. Также обратите внимание, что создание Framesetter - это дорогой процесс, сделайте это только один раз (т.е. вне фонаря :), если это возможно). - В вашем коде обращения с сенсорным обслуживанием, как я упоминал ранее, вам нужно компенсировать различные системы координат. Оттуда, предполагая, что вы знаете, где ваш текст использует свою систему координат, вы можете выяснить, где в тексте отображается кран, который затем можно перехватить в своем сенсорном обработке, если атрибут по определенному
CTRunRef
Содержит ваш пользовательский атрибут ссылки. Если это так, просто получите атрибут и пропустите его на что-то - как правило, именно здесь вы захотите использовать делегат.
Это суть этого.
Не связан с StackOverflow