Раскраска отдельных скаляров Unicode в NSMutableAttributedString - PullRequest
0 голосов
/ 19 апреля 2020

Я пишу приложение iOS с использованием Swift, которое работает с текстом, написанным на тайском языке, и пытаюсь выделить определенные c части символа. На тайском языке персонаж может состоять из нескольких скаляров Unicode, так как у персонажа на тайском языке могут быть другие символы, написанные над или под ним. Я хочу UILabel, который отображает текст следующим образом:

Example

Второй символ содержит 2 скаляра Unicode. Я пытался сделать это с помощью NSMutableAttributedString, но он только кажется способным назначать атрибуты на уровне персонажа. Здесь, однако, я бы потребовал, чтобы это происходило на скалярном уровне Unicode. Поскольку эта концепция уже отражена в том факте, что существуют унифицированные скаляры, я думаю, что это должно быть возможно, но пока не удалось найти способ сделать это.

Вот то, чем я был пытаясь:

    let val = inputThai.text!
    let finalString = NSMutableAttributedString()
    for ch in val {
        for scalar in ch.unicodeScalars {
            let thisString = NSMutableAttributedString(string: String(scalar))
            if (...condition...) {
                thisString.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor.red, range: NSRange(location: 0, length: 1))
            }
            finalString.append(thisString)
        }
    }

Тем не менее, символ, выделенный красным, просто остается черным.

Кто-нибудь знает, как я мог это сделать sh? 1015 *

...