Изменить цвет букв табличного представления, если найден текст панели поиска

У меня есть панель поиска и табличный вид. Я могу фильтровать элементы табличного представления на основе текста панели поиска. Но я должен изменить цвет найденной буквы. Например, если я пишу HE в строке поиска, я хочу показать HELLO в виде таблицы, но цвет HE должен отличаться от LLO.

Спасибо за идеи.


person Berker    schedule 19.09.2017    source источник
comment
Проверьте NSAttributedString   -  person jonaszmclaren    schedule 19.09.2017


Ответы (2)


используйте NSMutableAttributedString для своей концепции, здесь я говорю логику, настройте себя там, где вам нужно (должен вызываться внутри cellForRow)

    lblcheck.text = "hello" // is the original text 
    lblcheck.textColor = UIColor.red // initally set the whole color for your text
    //Create mutable string from original one
    let attString = NSMutableAttributedString(string: lblcheck.text!)
    //Fing range of the string you want to change colour
    //If you need to change colour in more that one place just repeat it
    let range: NSRange = (lblcheck.text! as NSString).range(of: "he", options: .caseInsensitive) //he in here use searchBar.text
    attString.addAttribute(NSForegroundColorAttributeName, value: UIColor.white, range: range) // here set selection color what ever you typed
    //Add it to the label - notice its not text property but it's attributeText
    lblcheck.attributedText = attString
person Anbu.Karthik    schedule 19.09.2017

Изменение цвета текста можно выполнить с помощью NSAttributedString. Когда вы показываете результаты поиска, в методе делегата cellForRow получите строку поиска и замените слово в версии textView на версию NSAttributedString. Вы можете изменить цвет для конкретной строки в файле NSAttributedString.

Это общая идея, не видя никакого кода.

person Fangming    schedule 19.09.2017
comment
Благодарю. я использовал NSAttributedString, как сказали вы и anbu.kartnik. - person Berker; 19.09.2017