Раскраска NSMutableAttributedString в UITextView дает странные результаты - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь создать элементарную программу просмотра IDE / кода, и поэтому я пытаюсь раскрасить определенные слова в UITextView. Я написал небольшой цикл, чтобы найти диапазоны, и другой, чтобы раскрасить слова в диапазоне на NSMutableAttributedString. Я знаю, что диапазоны рассчитываются правильно, потому что оператор print в конце кода дает правильные индексы. Однако я наблюдаю очень странный результат в приложении (скриншот ниже). Есть идеи, что может пойти не так?

КОД

    var ranges = [[Int]]()
    var rcounter = 0

    for word in content.components(separatedBy: [" ", "\n", "."]) {
        if (word == "func") {
            ranges.append([rcounter,rcounter+word.count])
        }
        rcounter += word.count
    }

    let attributedString = NSMutableAttributedString(string:content)

    for range in ranges {
        attributedString.addAttribute(NSAttributedStringKey.foregroundColor, value: UIColor.red, range: NSRange(location:range[0],length:range[1])
    }

    textView.attributedText = attributedString

    print(ranges) // [[0, 4], [288, 292]]

РЕЗУЛЬТАТ

screenshot

1 Ответ

0 голосов
/ 03 мая 2018

количество отдельных символов отсутствует.

проверьте это.

        var ranges = [[Int]]()

        var rcounter = 0

        let content = "func asdfasdfasdf. sdfdfdf12323 func adfadfasdf func() func. "
        for word in content.components(separatedBy: [" ", "\n", "."]) {
            if (word == "func") {
                ranges.append([rcounter,word.count])
            }
            //add loop count on every loop time
            rcounter += word.count + 1
        }

        let attributedString = NSMutableAttributedString(string:content)

        for range in ranges {
            attributedString.addAttribute(NSAttributedStringKey.foregroundColor, value: UIColor.red, range: NSRange(location:range[0],length:range[1]))
        }

Я надеюсь, что помощь для этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...