Добавьте подчеркивание, которое покрывает текст в NSAttributeString - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь создать пользовательский интерфейс «Заполнить пропуски», в котором часть атрибутивной строки (отображаемой либо в UITextView, либо в UILabel) скрыта и подчеркнута, а затем этот подчеркнутый раздел заполняется, как только пользователь угадаетчто это такое.

Я реализую это, сделав «скрытый» раздел строки с NSUnderlineStyle.thick и сделав текст прозрачным, но проблема в том, что чистый текст по-прежнему перекрывает подчеркивание, поэтому еслив этом слове есть буква, которая идет под строкой (например, «y»), в подчеркивании есть нежелательный разрыв.

Мой вопрос: как сделать так, чтобы подчеркивание перекрывало текст, или как это сделать?Вы делаете текст действительно прозрачным?Этот вопрос касается прямо противоположного вопроса: Подчеркивание охватывает текст в NSAttributedString .Я пытаюсь понять, как преднамеренно получить состояние «глючит» из этого вопроса, где есть жирное подчеркивание, которое идет по тексту.

Одна альтернатива, которую я рассмотрел и отклонил, это просто замена строкис пробелами и подчеркиванием их, потому что это изменит длину текста, и это будет выглядеть странно, и я не хочу использовать моноширинный шрифт.

Для чего стоит вот код:

let attrs = [NSAttributedStringKey.underlineStyle: NSUnderlineStyle.styleThick.rawValue]
attributedText.addAttributes(attrs, range: rangeOfStringToBeReplaced)    
attributedText.addAttribute(NSAttributedStringKey.underlineColor, value: UIColor.red, range:  rangeOfStringToBeReplaced)
attributedText.addAttribute(NSAttributedStringKey.foregroundColor, value: UIColor.clear, range:  rangeOfStringToBeReplaced)

Я пробовал это как с UILabel, так и с UITextView и не смог заставить его работать.

...