2012-10-10 3 views
1

в моей заявке У меня есть UILabel с большим количеством текста внутри. Когда пользователь выполняет исследование, я хочу выделить фон под текстом, который ищет пользователь. Вот пример из «Предварительный просмотр» в MacOSX.Выделите часть текста в UILabel

enter image description here

Пользователь ищет молчание и это слово будет выделено в тексте.

Любые идеи? Спасибо.

ответ

1

Вам нужно включить атрибут «атрибут» UILabel (или UITextView/пользовательский вид). Затем вам нужно найти/сделать хороший/быстрый алгоритм для изменения цвета (bg/text) цвета некоторых частей текста. Вы должны уметь находить довольно много алгоритмов с атрибутами строки, чтобы отметить некоторые слова/совпадения.

Пожалуйста, проверьте также http://iphonedevelopment.blogspot.be/2011/03/attributed-strings-in-ios.html

В случае, это может быть, может быть, легче/быстрее использовать WebView, сделав пользовательский HTML с совпавших-слов в другом цвете/BG-цвета. Веб-просмотр может выглядеть почти как нормальный ярлык и предлагает даже возможность использовать ссылки/изображения/..., которые могут улучшить пользовательский опыт в некоторых случаях.

0

Для этого вам нужно использовать NSAttributedString.

This также может помочь. Это подкласс UILabel, который рисует NSAttributedString, а также предоставляет удобные методы для установки атрибутов NSAttributedString из классов UIKit.

После того, как нужные буквы/символы найдены, выделите ту часть UIView или что-то, что вы там используете.

1

Возможно, это старый вопрос. Но я думаю, что это поможет кому-то.

Чтобы выделить часть текста в UILabel, я написал открытый исходный код с именем HighlightLabel.

Вы можете просто указать hightlightText и highlightColor, чтобы выделить его.

_highlightLabel.text = @"Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda."; 
_highlightLabel.highlightText = @"Lorem ipsum dolor sit er elit lamet"; 
_highlightLabel.highlightColor = [UIColor yellowColor]; 
Смежные вопросы