UILabel иногда отображает NSAttributedString с 1px высотой над текстом - PullRequest
0 голосов
/ 13 октября 2018

Это немного странная проблема для меня.Я отображаю какой-то сложный атрибутивный текст на ярлыке, и он работал хорошо, пока недавно над определенными строками текста не появилась маленькая серая линия, как показано ниже:

image

Обратите внимание, что это отличается от разделителя ячеек таблицы и отображается только над прямоугольником метки.

Немного отладив, я также заметил, что строка не появляется, когда я неиметь маленькую голубую метку "flair" в квадратных скобках: enter image description here

Я использую следующий код для добавления проблемных синих тегов:

let captionFont = UIFont.preferredFont(forTextStyle: UIFontTextStyle.caption1);
let offset = (bodyFont.lineHeight / 2) - (captionFont.lineHeight / 2)

attributedString.addAttributes([NSAttributedStringKey.font : captionFont, NSAttributedStringKey.foregroundColor : Constants.linkColor, NSAttributedStringKey.baselineOffset:offset], range: flairRange!)

Что яделать неправильно?Это ошибка CoreText?

1 Ответ

0 голосов
/ 13 октября 2018

После небольшого количества проб и ошибок я определил, что проблема возникает только тогда, когда offset является десятичным значением.Когда я просто заменил свою линию смещения на

let offset = ceil((bodyFont.lineHeight / 2) - (captionFont.lineHeight / 2))

, линия больше не появлялась.Я подозреваю, что это ошибка CoreText.

enter image description here

...